将node作为应用程序,从某个网站下载文件,而后将其上传到服务器上。

须要用到的库

axios:^0.27.2form-data:^4.0.0

思路:

1.应用axios将文件下载下来,放在tmp文件夹下,responsetype设为arraybuffer,因为写文件writefilesync须要应用到arraybuffer,不要下载stream流,应用createwritestream写文件,因为你还须要把下载下来的文件从新上传,而createwritestream没有同步的办法,这会导致你再上传的时候,文件还没生成好,造成服务器无奈正确获取文件。

2.读取tmp文件夹下文件,应用axios上传即可

const axios = require('axios')const fs = require("fs");const path = require("path");const Formdata = require("form-data");const fileName = "";//文件名称const fileDownloadUrl = ""; //文件下载门路const fileUploadUrl = "";//文件上传门路async function downloadAndUpload() {    let downloadResp = await axios({        method: "get",        url: fileDownloadUrl,        responseType: "arraybuffer"    })    let tempFileDir = path.join(path.resolve(__dirname, "tmp"), fileName);//长期文件目录    fs.writeFileSync(tempFileDir, downloadResp.data); //同步写入临时文件    let formdata = new Formdata();    formdata.append("file", fs.createReadStream(tempfiledir));    let headers = formdata.getHeaders();    let uploadResp = await axios({        method: "post",        url: fileUploadUrl,        headers: headers,        data: formdata,        maxBodyLength: Infinity,    })    return uploadResp;}