node.js - react native通过image-picker选择了图片并通过fetch上传,后端nodejs怎么接?

浏览:19日期:2022-09-16

问题描述

这是reactnative的代码

uploadImage(imageuri){let formData = new FormData();let file = {uri: imageuri,type:’multipart/form-data’,name:’image.png’};formData.append(’files’,file);fetch(’http://127.0.0.1:8080/image’,{ method:’POST’, headers:{’Content-Type’:’multipart/form-data’, }, body:fromData,}) .then((response)=>response.text()) .then((responseData)=>{ console.log(’responseData’,responseData); }) .catch((error)=>{console.error(’error’,error)}); }

后端 express

app.post(’/image’,function(req,res){后面不知道如何处理,才能保存到数据库或者保存到本地

问题解答

回答1:

https://github.com/expressjs/...

https://cnodejs.org/topic/564...

可以参考上面的链接,使用multer

文件的话一般不保存到数据库

回答2:

后端express 打印req.body,看看req.body.files有没有值,这个值是一个对象,包含你上传的文件相关信息,文件名,大小等,然后从中提取并存到你想存的文件夹。 formidable中间件,express底层就是用它实现的。以下是官方例子。

var formidable = require(’formidable’), http = require(’http’), util = require(’util’);http.createServer(function(req, res) { if (req.url == ’/upload’ && req.method.toLowerCase() == ’post’) { // parse a file upload var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { res.writeHead(200, {’content-type’: ’text/plain’}); res.write(’received upload:nn’); res.end(util.inspect({fields: fields, files: files})); }); return; } // show a file upload form res.writeHead(200, {’content-type’: ’text/html’}); res.end( ’<form action='/upload' enctype='multipart/form-data' method='post'>’+ ’<input type='text' name='title'><br>’+ ’<input type='file' name='upload' multiple='multiple'><br>’+ ’<input type='submit' value='Upload'>’+ ’</form>’ );}).listen(8080);

soonfy

相关文章: