我想将文件上传到服务器,但有没有办法(使用javascript)在上传之前在客户端压缩图像?
答案 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并提供数据压缩(即使以适当的速度)。