首页 > 编程知识 正文

原生ajax上传文件,axios发送formData

时间:2023-05-06 03:08:44 阅读:127520 作者:1032

我写视频项目的时候,我负责写后台,但最重要的上传文件,遇到了瓶颈,一直传不下去。 后来一直在学习请教前辈,项目一个月的审查结束后,这个上传的文件问题终于解决了。

我想分享这个,以后用的话,很容易去看!

首先是节点中。 我需要下载两个包。 一个是

npminstallconnect-multiparty---savenpminstall---- save form-data需要部署软件包

常数多点=请求(连接-多点); 常数格式数据=请求(格式数据); varmultipartmiddleware=multipart (; 这是节点中的axios。 首先获取在js中传递的值。 js代码在下面。 如果是js,则将文件和其他信息分开传递。 node接收通过js传递的数据,其他信息通过字符串连接。 链接通常无法识别字符,因此将字符转换为encodeURI (并进行编码。 这样就可以获取后端接口了

文件一般以formdata传递,获取文件,获取下一个文件的headers,获取文件路径,fs.createreadstream(uri ) data:formdata等情况。 代码中有显示

如果有文件的限制,就解除对他的限制

//广告routers1. put (/advertisement/add advertisement ),multipartMiddleware,(req,res )={letadvertisementname} 控制台. log (通告权重; 控制台. log (通告名称; let file=req.files.File; 控制台. log (文件; 控制台. log (file.headers; const uri=file.path; console.log(------------) ); 控制台. log (uri; console.log(------------) ); let myFile=new FormData (; myfile.append('file ',fs.createreadstream ) (uri ); axios (方法: (put ),URL :65335842.194.158.21133608080 /视频/advertisement/add advertisement? 通告名称=$ { encodeuri (通告名称) }通告权重=$ {通告权重} `,data : my文件might } maxRedirects: 5,maxBodyLength: Infinity,}.then (功能(数据) ) console.lity console.log (数据.数据); RES.send (数据:数据.数据); }.catch (功能(err ) ) console.log ) ' err ); RES.send({error:err,status: err.status,}; ); ); 如果是JS的话很简单。 正常地给价。 其他信息通过params传递到node接口。 data传递格式数据。 之后,上传文件时上传成功。

varfile=$('.file ' ).files[0]; 常数格式数据=new格式数据(; formdata.append('file ',file ); axios((URL: ) /通告/添加通告),data: formdata, Params: ) advertisementname3360$ ).aame advertisement weight 3360 $ (.advertisement weight ' ).value,),method 3360 ) ).then ) ) data )={console} }.catch((err )={console.log ) ' addadvertisementerr: ',err ); ); 如果有问题,则可能是接口问题,或者传递的值未进行类型转换,无法检索。 请直接从后端传递的接口测试链接复制并尝试,以确定是接口问题还是其他问题!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。