上传/下载之前/之后的客户端(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)文件操作的主要内容,如果未能解决你的问题,请参考以下文章
#私藏项目实操分享# 使用 JavaScript 上传 PDF 和 Excel 等二进制文件到 AB