2010-10-22 31 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+"&"); 

希望这有助于。