背景
怎么将网上心仪的图片、视频保存到自己的资源空间(图床)?给你一个资源链接,你需要几步将这个资源转存到git上?一般人的做法可能就是先将资源下载到本地,然后再本地上传到对应的资源空间?如果操作一个资源转存,这样还不算麻烦,但是如果一次性要转存上百个资源,那就太痛苦。
本文我将介绍怎么一步将在线链接转存到git空间。
应用场景
-
网页爬虫、博客搬家
-
在线资源转存
功能实现
https://csdnimg.cn/medal/github@240.png
现在将CSDN的头像上传到自己的资源空间,比如git,七牛云等。
准备工作
-
Node环境
-
axios / request
1. 请求资源
以 Stream 形式下载在线图片
await axios.get(url, { responseType: "stream" });
2. 上传资源
以 Stream 形式上传资源,调用上传附件接口
onst formData = new FormData();
formData.append('file', fileRet.data);
await axios.post('http://localhost:8810/admin/material/upload',
formData, { headers:
{
'content-type': `multipart/form-data;boundary=${formData._boundary}` }
});
‘content-type’: multipart/form-data;boundary=${formData._boundary}
这个 header 是核心代码,必须加上才能上传 stream流资源。
3. 接受资源
以 Nest 框架为例
@Post('upload')
@UseInterceptors(FileInterceptor('file'))
async uploadFile(@UploadedFile() file ) {
// 拿到file文件可以保存到服务器本地或者上传到资源池
}
4. 相关上传文章
总结
https://cdn.fmlg1688.cn//images/e387a23a4e2f4ea58c41ed8e060ca166.png