2011-08-17 104 views
1


已經有幾個類似的問題(herehere),但不完全是我想要的,我一直沒能到代碼結合。添加使用JavaScript新的文件擴展名不刪除舊

我有一個上傳表單,如果用戶上傳ZIP或RAR文件,我想添加.jpg文件擴展名,而無需刪除.zip或.rar擴展名。例如,「file.zip」改爲「file.zip.jpg」。

我需要這個,因爲用戶可以將圖像和PDF文件上傳到我的服務器,但如果有人有多個文件,最好壓縮它們。我還根據用戶在上傳表單中所做的選擇,爲上傳的文件編寫了某些元數據。元數據用於Elvis,因此我可以根據元數據移動服務器周圍的圖片。問題是某些元數據目前無法在Elvis的ZIP文件中寫入,因此我的解決方法是將文件擴展名更改爲.jpg以欺騙Elvis併爲該文件編寫元數據。是的,這是一個糟糕的解決方法,但目前它符合我的目的。

我沒有太多的代碼準備好,因爲我不知道應該從哪裏開始。另外,當你看到我的JS函數時,你不會從椅子上掉下來;)JS代碼可以用jQuery編寫。

<form action="http://url.here" method="post" enctype="multipart/form-data" id="form" onsubmit="addExtension();"> 
    <label for="file">File </label> 
    <input type="file" name="Filedata" id="file"> 
    <input type="submit" value="Upload" /> 
</form> 

回答

0

您鏈接的問題基本上是關於字符串操作的問題。但是,您希望以編程方式更改文件上傳,這是完全不同的主題。從歷史上看,大多數瀏覽器出於安全原因明確禁止它。一些現代瀏覽器實現了W3C File APIhere's an example for Firefox),它提供了對文件上傳的完全控制。我不知道它的支持有多廣泛(可能它不適用於Internet Explorer),但除非您願意切換到Flash,否則這是您唯一的客戶端機會。我不確定你有多少自由(看起來貓王是某種黑匣子)。但是我不確定你有多少自由。

編輯:我剛剛發現這一點:http://en.wikipedia.org/wiki/Comparison_of_layout_engines_(HTML5)#Related_specifications

+0

我不認爲他是問荏苒實際上在上傳之前的文件。假設有foo.zip,並且他認爲將其更改爲foo.zip.jpg表示服務器將允許上載。 – 2011-08-17 13:09:14