我被困住了。我使用uploadify将多个文件上传到我的s3服务器。我想将每个文件放入一个具有唯一标识符的文件夹。我希望做的是使用这种语法来实现它(注意uuid是一个生成uuids的jquery插件):
'onComplete' : function(event,queueId,fileObj,response) {
$('#fileInput').uploadifySettings('folder',$.uuid())
}
我的问题是,当调用此回调时 - 我无法再访问$('#fileInput').uploadifySettings(x,y)
我得到它是一个未定义的方法?!
注意的其他uploadify设置:
'auto': 'true'
'multi': 'true'
我将直接上传到亚马逊s3
有没有人碰到这个?关于如何解决的想法?
谢谢!
答案 0 :(得分:3)
我通过更改scriptData“onSelect”解决了同样的问题,所以当你选择一个新文件时:
onSelect : function(){
$('#images_upload_file').uploadifySettings("scriptData", {'yourvar': yourvalue });
},
似乎可以解决这个问题
答案 1 :(得分:1)
我希望我不会完全误解你的问题。
在服务器端这样做不是很容易吗?你必须在服务器端处理上传,这通常涉及以某种方式从临时位置获取上传的文件,确保它不是邪恶的,然后将其复制到最终的休息地点。
在最后一个复制步骤中,您可以轻松地引入一个uuid(在这种情况下,也可以在服务器端生成)。
这是一种有效的方法,还是我错过了你的要求?
答案 2 :(得分:0)
我遇到了同样的问题。经过几个小时的痛苦,我终于通过手动操作传递给flash上传对象的flashvars字符串来解决它。
鉴于此HTML元素:
<div id="file_upload" name="file_upload"></div>
我继续使用以下内容启动对该元素的uploadify:
$('#file_upload').uploadify({
// Empty folder path
'folder' : ''
});
这会在您的HTML文件中添加一个<object>
元素,其中包含多个<param>
子元素。其中一个<param>
元素名为“flashvars”,其字符串值包含上载文件夹路径。因此,为了更改文件夹值,我搜索该字符串以查找“folder =”参数,如下所示:
// 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+"&");
希望这有帮助。