Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在浏览器中上载和下载任何文件?_Javascript_Webapi - Fatal编程技术网

Javascript 如何在浏览器中上载和下载任何文件?

Javascript 如何在浏览器中上载和下载任何文件?,javascript,webapi,Javascript,Webapi,这是我正在做的一个实验的一部分 假设我上传了一个文件,例如:.psd(photoshop文件)或.sketch(sketch),通过输入类型文件标签,它显示了文件的名称,点击一个按钮就可以下载为.psd/.sketch(无数据损坏) 这将如何实现 编辑1: 我要补充一点信息,因为上面的内容并不完全清楚 这就是流程: 用户上传任何文件 文件在发送到sockets.io服务器之前在客户端进行加密 另一端的用户接收到该文件并能够解密和下载 注意:没有与sockets.io连接的数据库。它只是监听并响应

这是我正在做的一个实验的一部分

假设我上传了一个文件,例如:.psd(photoshop文件)或.sketch(sketch),通过输入类型文件标签,它显示了文件的名称,点击一个按钮就可以下载为.psd/.sketch(无数据损坏)

这将如何实现

编辑1:

我要补充一点信息,因为上面的内容并不完全清楚

这就是流程:

  • 用户上传任何文件
  • 文件在发送到sockets.io服务器之前在客户端进行加密
  • 另一端的用户接收到该文件并能够解密和下载
  • 注意:没有与sockets.io连接的数据库。它只是监听并响应连接到服务器的任何人

    我有enc/dec部分的保险。唯一的事情是上传和存储为?在变量中进行加密,并在最近端执行相反的操作(dec和downlodable)


    再次提前感谢:)

    我想这是你的问题:

    • 如何读取打开/放入
      元素的文件
    • 如何将文件发送到服务器
    • 如何从服务器接收文件
    当用户在文件元素上打开文件时,您将能够使用其属性:

    for (const file of fileInputEl.files) {
      // Do something with file here...
    }
    
    每个文件都实现,这意味着您可以调用以获取,您可能可以直接在其他库中使用。至少,您可以从中创建字节数组

    现在,为了发送数据,我强烈建议您使用HTTP而不是Socket.IO。如果只以一种方式发送数据,则不需要Web套接字连接或Socket.IO。如果您发出一个正常的HTTP请求,那么您将把对它的所有处理卸载到浏览器上。在上传端,它可以简单到:

    fetch('https://files.example.com/some-id-here', {
      method: 'PUT'
      body: file
    });
    

    在接收端,您只需打开一个链接
    ,就可以完成此操作,在那里数据可以点对点发送,为您节省一些带宽。这有一些复杂性,但它可能对您有用。

    有什么问题吗
    ?将
    下载
    属性添加到
    a
    标记看看:虽然它看起来有几年的历史了。那么,您想用Socket.IO来实现这一点吗?如果您可以控制服务器端连接,为什么不改为通过HTTP进行控制呢?这样,你可以得到传输压缩,浏览器处理所有的缓冲,你不必把整个文件加载到内存中,等等。一方可以做一个简单的HTTP PUT,而另一方可以做HTTP get。该文件可以直接通过服务器传输。还有,这样你就可以使用HTTPS…@rohanharikr你的问题是什么?你对我说这不是关于运输,而是关于加密。然后你回复ATD说这不是关于加密,而是关于传输。是哪一个?我再问你一次,为什么不能使用HTTP呢?