input file 能够上传远程 url 文件吗?

2022-06-18 10:43:19 +08:00
 geekape

正常情况下,我们使用 input 标签都是上传本地文件如:

<input id="file" type="file" multiple />
document
.querySelector('input[type="file"]')
.addEventListener('change', function (e) {

    for (const item of this.files) {
    
        upload(item)
    }
})

那么问题来了,有个远程的 mp3 文件,它的地址是 https://bafybeibfo53sxuztzh47ilsupgyxxj4a2gf7vbszovyllajagvetewytna.ipfs.dweb.link/test.mp3 ,怎么上传到服务器呢?

尝试了一些方法,一直不成功,还望知道的大神解惑

1668 次点击
所在节点    问与答
13 条回复
summerwar
2022-06-18 10:47:42 +08:00
直接 input 一个文本框,然后把网址传到后台,在服务器上下载就是了
renmu123
2022-06-18 10:51:23 +08:00
先请求文件后保存为 blob 或者 file 然后再传上去。
我也不知道实际是否可行,你可以尝试一下
geekape
2022-06-18 10:53:53 +08:00
@summerwar 文件有很多,服务端最好不要下载下来,直接存到第三方音乐平台
geekape
2022-06-18 10:54:25 +08:00
@renmu123 本地要下载下来,再上传吗
Juszoe
2022-06-18 11:12:34 +08:00
2 楼方法没问题,前端下载存成 blob ,再上传第三方平台
Juszoe
2022-06-18 11:14:50 +08:00
可能会遇到跨域问题
DOLLOR
2022-06-18 12:01:01 +08:00
前端提交个 URL 文本,让服务器自己下载,或者前端先下载再上传。
无论如何肯定都要涉及传输。
ferock
2022-06-18 12:04:29 +08:00
@geekape #3

所以,你的意思是,让第三方音乐平台自己下载?
westoy
2022-06-18 12:05:11 +08:00
跨域问题不行的吧, 就是不知道能不能通过本地播放+canvas+Wasm 重编码去做......

服务端一般也处理不完美, 因为这种东西很少有不做防盗链的, 认证的那个 key 不同 cookie 、ip 都不一样的。 这个你可能得根据特征定制匹配方案。

完美的通用解决方案就是让用户下载再上传
geekape
2022-06-18 12:17:27 +08:00
已经解决了各位
geekape
2022-06-18 12:17:50 +08:00
采用 2 楼的方法可以
geekape
2022-06-18 14:57:35 +08:00
@ferock 我是本地下载转 blob ,再上传,不过很慢
walker748
2022-06-18 18:05:45 +08:00
慢的话,做切片上传吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/860456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX