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