2010-10-22 33 views
5

我被卡住了。我正在使用uploadify將多個文件上傳到我的s3服務器。我想將每個文件放入一個文件夾中,該文件夾的唯一標識符爲。我希望做的是使用此語法來實現這一目標(注意UUID是一個jQuery插件生成的UUID):uploadify |動態更改uploadifysettings

'onComplete' : function(event,queueId,fileObj,response) { 
    $('#fileInput').uploadifySettings('folder',$.uuid()) 
} 

我的問題是,當這個回調函數被調用 - 我不能再訪問$('#fileInput').uploadifySettings(x,y)我知道這是一個未定義的方法?!值得注意的

其他uploadify設置:

'auto': 'true' 
'multi': 'true' 

,我直接上傳到Amazon S3

有沒有人遇到這樣?想法如何解決?

謝謝!

+0

我現在有完全相同的問題。對uploadifySettings的調用會導致我的腳本崩潰。 – o01 2011-03-09 21:15:04

回答

1

我希望我不會完全誤解你的問題。

在服務器端做這件事不是很容易嗎?無論如何,你必須在服務器端處理上傳,通常以某種方式從臨時位置獲取上傳的文件,確保它不是邪惡的,然後將其複製到最終的安放位置。

在最後的複製步驟中,您可以輕鬆地引入uuid(在這種情況下,也可以在服務器端生成,我想)。

這是一個有效的方法,還是我錯過了你的要求?

+0

感謝您的支持。實際上,我將文件直接上傳到亞馬遜S3,雖然我可以在我的服務器上使用回調來加載文件,但是將它們放在正確的位置可能會更容易。但是 - 只有在可能的情況下! – Jonathan 2010-10-28 14:11:26

+0

@Jonathan:啊,這就是你想這樣做的原因。我仍然認爲可以按照您所描述的方式進行操作,但可能需要更改uploadify的內部功能,除非有迄今爲止我忽略的事件/選項。我不確定他們是否會對此皺眉。直到明天我才能進一步調查,但我很想知道現在。 ;) – Thomas 2010-10-28 14:24:04

+0

酷 - 會喜歡任何見解 - 我不是一個JavaScript專家。奇怪的是,uploadifySettings在事件期間的行爲如何。謝謝你的幫助。 – Jonathan 2010-10-28 14:42:45

3

我解決了這個同樣的問題如下,通過改變scriptData「ONSELECT」所以當你選擇一個新的文件:

onSelect : function(){ 
      $('#images_upload_file').uploadifySettings("scriptData", {'yourvar': yourvalue }); 
     }, 

,似乎這樣的伎倆

+1

謝謝。這對我不起作用。問題,在你的設置中你使用auto:true和/或multi:true?我想知道這些是不是罪魁禍首。如果是的話 - 是否有解決方法 - 多重上傳對我來說是一個要求 – Jonathan 2010-11-01 13:58:47

+0

^^跟進 - 爲auto使用auto和multi設置爲true來完成這項工作? – Jonathan 2010-11-02 18:19:20

+0

我有自動設置爲true – Jorre 2010-11-05 09:48:29

0

我有同樣的問題。經過數小時的痛苦,我終於通過手動操縱傳遞給Flash上​​傳對象的flashvars字符串來解決它。

鑑於這種HTML元素:

<div id="file_upload" name="file_upload"></div> 

我繼續開始uploadify該元素與此:

$('#file_upload').uploadify({ 
    // Empty folder path 
    'folder' : '' 
}); 

這增加了<object>元素與幾個<param>孩子到你的HTML文件。其中一個<param>元素名爲「flashvars」,其字符串值包含上傳文件夾路徑。因此,爲了改變文件夾值,我搜索該字符串爲「文件夾=」參數,像這樣:

// Find correct <param> element and retrieve it's value 
var found = $("#file_uploadUploader").find("param[name=flashvars]").val(); 

// Search within that value for the specific folder argument using a regex 
// and replace find with new_path 
found = found.replace(/folder\=.*\/&/, "folder="+new_path+"&"); 

希望這有助於。