在客户端压缩文件

时间:2009-12-07 12:59:22

标签: asp.net javascript

我想将文件上传到服务器,但有没有办法(使用javascript)在上传之前在客户端压缩图像?

8 个答案:

答案 0 :(得分:1)

大更新:在html5中,您可以使用javascript访问以前选择的文件(-list)! 详细信息:http://www.html5rocks.com/en/tutorials/file/dndfiles/

答案 1 :(得分:0)

在IE中你可以实例化ActiveX控件,理论上它可以让你做任何你喜欢的客户端。然而(从它的BIG开始)它可能会从安全角度为必须用户/浏览器敲响警钟。

从JavaScript实例化ActiveX控件的代码:

var myObject = new ActiveXObject('MyObject.MyControl');

答案 2 :(得分:0)

不,使用javascript无法实现:您将无法从javascript访问原始数据。您需要使用浏览器插件,例如Java applet,flash或(因为您使用的是asp.net)Silverlight。

您可以从codeplex查看现有的开源控件: http://www.codeplex.com/SilverlightFileUpld

答案 3 :(得分:0)

如果你想要的是压缩数据而不是文件,那么可以:this SO question。但是,您需要访问JavaScript中的数据。

答案 4 :(得分:0)

无论如何,图像都会被压缩,因此尝试进行任何进一步的客户端压缩可能会产生很少或没有回报。

希望这有帮助。

答案 5 :(得分:0)

有一种方法可以在JavaScript中压缩图像:http://www.bytestrom.eu/blog/2009/1120a_jpeg_encoder_for_javascript

我怀疑这会让您将压缩版本上传到服务器。我很确定你需要使用Flash或基于Java的东西。

Flash可以进行JPEG压缩AFAIK。还有不少基于闪存的开源文件上传器。其中之一,SWFUpload(http://swfupload.org/),已经支持最新alpha中的客户端图像大小调整,这可能是你想要的。但是如果你想要真正的压缩(比如JPEG),我相信你可以为你扩展SWFUpload。

修改 看起来SWFUpload确实在最新的Alpha版本中为您做了所有这些。在这里查看演示:http://demo.swfupload.org/v250alpha1/resizedemo/index.php

我看到他们提到目前这方面的文件有限。

您可能正在寻找的JavaScript源代码中的行是:

swfu.startResizedUpload(swfu.getQueueFile(0).id, 100, 100, SWFUpload.RESIZE_ENCODING.JPEG, 100);

祝你好运!

答案 6 :(得分:-1)

不,JavaScript无法访问用户在浏览对话框中选择的文件。

你可以使用Flash或Java applet完成这样的事情,但它可能不值得这么麻烦。

答案 7 :(得分:-1)

由于您无法访问上传文件的数据,因此这没有多大意义。您可以使用限制访问文件系统的FlashPlayer 10并提供数据压缩(即使以适当的速度)。