Wie lade ich eine Bilddatei in node.js hoch?
Sep 25 2020
var title="this is title";
var content="this is content";
const config = { headers: {'Accept': 'application/json', 'Content-Type': 'multipart/form-data' } };
const form = new FormData()
let file =event.target.files[0]
form.append('file', file)
form.append('title', title)
form.append('content', content)`enter code here`
Axios.post("http://localhost:3001/article/get/123", form,config ).then((res)=>{
console.log(res.data)
})
Antworten
1 NileshSolanki Sep 25 2020 at 17:54
Im Knoten habe ich Multer zum Hochladen von Bildern oder Ähnlichem verwendet.
Unten ist der Code zum Hochladen, den ich als Middleware verwendet habe.
const util = require("util");
const path = require("path");
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, "./Uploads") // folder path where to upload
},
filename: function (req, file, cb) {
cb(null, file.originalname + "-" + Date.now() + path.extname(file.originalname))
}
});
const maxSize = 1 * 20000 * 20000; // file size validation
const uploadFiles = multer({ storage: storage, limits: { fileSize: maxSize } }).array("myfiles", 10); // key name should be myfiles in postman while upload
const uploadFilesMiddleware = util.promisify(uploadFiles);
module.exports = uploadFilesMiddleware;
Unten ist die Funktion, die ich in Controller für Upload und Dateiprüfung erstellt habe.
fileUpload = async (req, res) => {
try {
let userCode = req.headers.user_code;
await upload(req, res);
if (req.files.length <= 0) {
return res.status(httpStatusCode.OK).send(responseGenerators({}, httpStatusCode.OK, 'Kindly select a file to upload..!!', true));
}
let response = [];
for (const element of req.files) {
let data = await service.addFileData(element, userCode);
response.push(data); // for file path to be stored in database
}
if (response && response.length > 0) {
return res.status(httpStatusCode.OK).send(responseGenerators(response, httpStatusCode.OK, 'File uploaded sucessfully..!!', false));
} else {
return res.status(httpStatusCode.OK).send(responseGenerators({}, httpStatusCode.OK, 'Failed to upload file kindly try later..!!', true));
}
} catch (error) {
logger.warn(`Error while fetch post data. Error: %j %s`, error, error)
return res.status(httpStatusCode.INTERNAL_SERVER_ERROR).send(responseGenerators({}, httpStatusCode.INTERNAL_SERVER_ERROR, 'Error while uploading file data', true))
}
}
und die Route wird so verlaufen.
router.post('/upload/file', fileUploadController.fileUpload);
Achten Sie beim Hochladen von Dateien darauf, dass der Name beim Postboten derselbe bleibt wie bei der Middleware.
omair Sep 25 2020 at 17:29
Der obige Code befindet sich in react.js. Ich möchte die gleiche Arbeit in node.js machen und die Datei wird aus dem öffentlichen Ordner hochgeladen. Hauptproblem ist das Hochladen von Bilddateien in einem Format wie im Frontend event.target.files [0]