上传/下载之前/之后的客户端(javascript/jQuery)文件操作

Posted

技术标签:

【中文标题】上传/下载之前/之后的客户端(javascript/jQuery)文件操作【英文标题】:Client side (javascript/jQuery) file manipulation before/after upload/download 【发布时间】:2010-12-27 16:02:31 【问题描述】:

我只是在四处张望并画了一个空白。我想看看这是否可能,因为到目前为止我还没有办法做到这一点。

我想在上传文件之前在本地加密文件(在浏览器中使用现有库)。然后我需要在将文件呈现给用户之前检索并解密它。具体来说,我无法在存储之前将文件发送到服务器进行加密。加解密需要在客户端进行。

这是我需要做的大致流程:

    向用户展示查找文件小部件。 将文件读入客户端脚本(即在本地加载) 在客户端加密。 上传加密版本,刷新客户端并存储数据。

反过来:

    下载文件的存储加密版本。 在客户端解密。 将解密后的文件作为下载文件返回给用户。

我一直在客户端上寻找某种 MIME 编码(类似于电子邮件附件在作为纯文本发送之前进行 MIME 编码的方式)。我对 jQuery 方法特别感兴趣,因为这是我的应用程序的其余部分正在使用的方法,但普通的旧 javascript 就可以了。

非常感谢收到任何想法或建议。这是我在假期里考虑的一个。所以,提前感谢任何 cmets。

【问题讨论】:

即使你能做到,会不会有安全问题,即使你能做到?您想保护文件内容的人也可以读取您的 JS 源代码,对吗? 【参考方案1】:

你不能用 JavaScript 做到这一点。当然,您可以简单地使用 SSL(例如,通过 HTTPS)。非常简单,经过充分测试,所有这些。否则,您将不得不使用非标准的东西,例如 Flash、Java 或 ActiveX。

【讨论】:

【参考方案2】:

由于浏览器的安全限制,无法使用纯 Javascript 或 JQuery 执行此操作。

您最好的选择可能是采用基于 Flash 的开源上传组件,如 SWFUpload(Flash 可以更多或客户端)并在 ActionScript 中添加加密例程。创建 Java 小程序或 ActiveX 控件也是有效的选项。

根据我们所讨论的加密类型,也可能存在用于这项工作的现成组件。

【讨论】:

我开始这么认为。谢谢。我看 Flash 没有问题,所以我会调查一下。谢谢佩卡。【参考方案3】:

I can't speak to other browsers,但我知道这在 Firefox 中应该是可能的,方法是使用 file manipulation api 将文件从用户上传/下载到客户端代码(可能会被操纵),并使用标准 ajax 上传/将文件从客户端代码下载到服务器。

【讨论】:

【参考方案4】:

此处接受的答案已过时。现在可以使用 html5 File API 和 CryptoJS library 之类的东西来做到这一点。

【讨论】:

以上是关于上传/下载之前/之后的客户端(javascript/jQuery)文件操作的主要内容,如果未能解决你的问题,请参考以下文章

DOC文件上传造成存储XSS

#私藏项目实操分享# 使用 JavaScript 上传 PDF 和 Excel 等二进制文件到 AB

上传下载

使用 JavaScript 下载图像

node.js 中,先上传文件,上传完成之后点击超链接,跳转到download操作,怎样实现文件的下载

前端图片预览,上传前预览,兼容IE7891011,Firefox,Chrome