使用节点作为应用程序从网站下载文件并将其上传到服务器。要使用的库axios:^0.27.2form-data:^4.0.0思路:1、使用axios下载文件,放在tmp文件夹下,设置responsetype为arraybuffer,因为writefilesync需要使用arraybuffer,不要下载流,使用createwritestream写文件,因为下载的文件还需要重新上传,createwritestream没有同步方法,会导致再次上传时文件生成不出来,导致服务器未能正确获取文件。2.读取tmp文件夹下的文件,用axios上传constaxios=require('axios')constfs=require("fs");constpath=require("path");constFormdata=require("form-data");constfileName="";//文件名constfileDownloadUrl="";//文件下载路径constfileUploadUrl="";//文件上传路径asyncfunctiondownloadAndUpload(){letdownloadResp=awaitaxios({method:"get",url:fileDownloadUrl,responseType:"arraybuffer"})lettempFileDir=path.join(path.resolve(__dirname,"tmp"),fileName);//临时文件目录fs.writeFileSync(tempFileDir,downloadResp.data);//同步写入临时文件letformdata=newFormdata();formdata.append("文件",fs.createReadStream(tempfiledir));让headers=formdata.getHeaders();让uploadResp=awaitaxios({method:"post",url:fileUploadUrl,headers:headers,data:formdata,maxBodyLength:Infinity,})返回uploadResp;}
