2009-12-07 110 views
3

我想上傳一個文件到服務器,但有什麼辦法(使用JavaScript)在客戶端壓縮圖像上傳之前?在客戶端壓縮文件

+0

你在body中提到javascript但你標記了它c# – 2009-12-07 13:01:56

+1

爲什麼社區Wiki? – 2009-12-07 13:07:26

+0

更新你的問題,我想給你一些東西:) – 2009-12-07 13:08:44

回答

-1

不,JavaScript無權訪問用戶在瀏覽對話框中選擇的文件。

你可以使用Flash或Java小應用程序來完成這樣的事情,但它可能不值得麻煩。

0

在IE中,你可以實例化ActiveX控件,理論上它可以讓你做任何你喜歡的客戶端。然而,從安全角度來看,它必須爲用戶/瀏覽器敲響警鐘。

代碼從JavaScript實例化ActiveX控件:

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

沒有,根本不可能使用javascript:你將無法從JavaScript訪問原始數據。您需要使用瀏覽器插件,例如Java applet,flash或(因爲您正在使用asp.net)Silverlight。

你可以從CodePlex上檢查出的現有的開源控制: http://www.codeplex.com/SilverlightFileUpld

0

如果你想要的是壓縮數據而不是一個文件,它是可能的:看this SO question。但是,您需要訪問JavaScript中的數據。

0

無論如何,圖像往往會被壓縮,所以試圖進行任何進一步的客戶端壓縮可能會產生很少或沒有回報。

希望這會有所幫助。

-1

由於您無法訪問上傳文件的數據,所以這沒有多大意義。您可以使用限制訪問文件系統並提供數據壓縮(即使速度適當)的FlashPlayer 10。

0

有壓縮JavaScript中的圖像的方式:http://www.bytestrom.eu/blog/2009/1120a_jpeg_encoder_for_javascript

我懷疑這將讓你上傳的壓縮版本的服務器雖然。我很確定你需要使用基於Flash或Java的東西。

Flash能夠做JPEG壓縮AFAIK。那裏也有不少開源的基於Flash的文件上傳器。其中一個SWFUpload(http://swfupload.org/)已經支持客戶端圖像調整大小的最新阿爾法,這可能是你想要的。但是,如果你想要真正的壓縮(如JPEG),我相信你可以將SWFUpload擴展到這個。

編輯: 看來SWFUpload確實在最新的Alpha版本中爲您做了所有這些。看看這裏的演示:http://demo.swfupload.org/v250alpha1/resizedemo/index.php

我看到他們提到,目前文件雖然有限。

你可能會尋找JavaScript源代碼中的行是:

​​

祝您好運!

相關問題