V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
geekape
V2EX  ›  问与答

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

  •  
  •   geekape · 2022-06-18 10:43:19 +08:00 · 1680 次点击
    这是一个创建于 907 天前的主题,其中的信息可能已经有所发展或是发生改变。

    正常情况下,我们使用 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 ,怎么上传到服务器呢?

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

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

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

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

    完美的通用解决方案就是让用户下载再上传
    geekape
        10
    geekape  
    OP
       2022-06-18 12:17:27 +08:00
    已经解决了各位
    geekape
        11
    geekape  
    OP
       2022-06-18 12:17:50 +08:00
    采用 2 楼的方法可以
    geekape
        12
    geekape  
    OP
       2022-06-18 14:57:35 +08:00
    @ferock 我是本地下载转 blob ,再上传,不过很慢
    walker748
        13
    walker748  
       2022-06-18 18:05:45 +08:00
    慢的话,做切片上传吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   890 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.