Estoy creando una aplicación web que necesita cargar un informe de prueba. estoy trabajando en el front-end y otro tipo está trabajando en el back-end (con nodejs y mongodb). Su servidor API se ejecuta por separado y mi aplicación web se ejecuta por separado. ahora necesito enviar el archivo cargado a su API tal como está. tengo un problema para hacerlo. Estoy enviando datos a través de ajax. este es mi codigo ajax
var $form = $(e.target); var formData = new FormData(); formData.append('productsfile', $('#prdcttestfile')[0].files[0]); formData.append('productid', $('#prdctid').val()); formData.append('warantydays', $('#prdctwarranty').val()); formData.append('baseprice', $('#prdctbaseprice').val()); formData.append('discountedpercent', $('#prdctdiscountedprice').val()); formData.append('taxpercent', $('#prdcttax').val()); formData.append('language', $('#prdctlanguage').val()); formData.append('inventoryid', $('#village').val()); $.ajax({ url: '/product/movetoinventory', type: 'POST', data: formData, contentType: false, processData: false, success: function (response) { if (response.success) { new PNotify({ title: "Enquiry Updted", type: "info", text: "Your enquiry has been updated", nonblock: { nonblock: true }, addclass: 'dark', styling: 'bootstrap3', hide: true, before_close: function (PNotify) { PNotify.update({ title: PNotify.options.title + " - Enjoy your Stay", before_close: null }); PNotify.queueRemove(); return false; } }); $('.modal.in').modal('hide'); $("#inventory_product")[0].reset(); } } });cuando uso console.log (req.body) en mis rutas, obtengo los datos junto con la RUTA DEL ARCHIVO (no el archivo). si uso console.log(req.files) me quedo vacío {}.
Puede utilizar dos métodos para cargar archivos.
Envíe Base64 del archivo al backend. El desarrollador del backend almacena este archivo en el servidor y la URL de la ubicación de la tienda se almacenará en la base de datos.
Para el nodo, tenga multer y connect-multiparty npm. Puede elegir uno de ellos.
Para el código de fondo es
var express = require('express'), bodyParser = require('body-parser'), host = '127.0.0.1', port = '3002', multer = require('multer'), app = express(); var upload = multer() app.use(bodyParser.urlencoded({ extended: false })) app.post('/file-upload', upload, function(req, res) { console.log('file upload'); }) app.listen(port, function() { console.log('hi server run' + " " + port); })y el código front-end es
<body> <form method="post" enctype="multipart/form-data" action="http://localhost:3002/file-upload"> <input type="file" name="thumbnail"> <input type="submit"> </form>Creo que la segunda opción es una buena opción para cargar archivos. Puede verificar multer
para la carga de múltiples archivos en un