2010-10-22 10 views
5

Estoy atascado. Estoy usando uploadify para subir varios archivos a mi servidor s3. Me gustaría poner cada archivo en una carpeta que tiene un identificador único. Lo que esperaba hacer era utilizar esta sintaxis para lograrlo (nota UUID es un plugin jQuery para generar UUID):uploadify | cambiar uploadifysettings sobre la marcha

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

Mi problema es que cuando se llama a esta devolución de llamada - yo no tengo acceso a más largo $('#fileInput').uploadifySettings(x,y) entiendo que es un método indefinido?!

Otros ajustes Uploadify de nota:

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

y estoy de subir directamente a Amazon S3

Cualquier persona ha funcionado en esto? Ideas sobre cómo resolver?

Gracias!

+0

Estoy teniendo exactamente el mismo problema ahora. La llamada a uploadifySettings bloquea mi script. – o01

Respuesta

1

Espero no estar del todo mal entendiendo su pregunta.

¿No sería muy fácil hacerlo en el lado del servidor? De todos modos, debe manejar la carga en el lado del servidor, lo que generalmente implica de alguna manera recuperar el archivo cargado desde una ubicación temporal, asegurarse de que no es malo y luego copiarlo en su lugar de descanso final.

En ese último paso de copiado, podría introducir fácilmente un uuid (en este caso generado también por el lado del servidor, supongo).

¿Sería ese un enfoque válido o me falta un requisito que usted tiene?

+0

Gracias por sonar. En realidad, estoy cargando los archivos directamente a Amazon s3, y aunque podría utilizar devoluciones de llamada a mi servidor para mover el archivo al cargarlo, sin duda sería más fácil ponerlos en el lugar correcto para comenzar. Pero, ¡solo si es posible! – Jonathan

+0

@Jonathan: Ah, es por eso que quieres hacerlo de esa manera. Todavía creo que es posible hacerlo de la forma que usted ha descrito, pero podría requerir cambiar las entrañas de uploadify, a menos que haya un evento/opción que haya pasado por alto hasta ahora. No estoy seguro si fruncirían el ceño sobre eso. No podré investigar más hasta el día de mañana, pero tengo curiosidad por descubrirlo ahora. ;) – Thomas

+0

Genial - me encantaría cualquier idea - No soy un experto en JavaScript. Es extraño cómo se comporta uploadifySettings durante sus eventos. Gracias por tu ayuda. – Jonathan

3

que resolvieron este mismo problema de la siguiente manera, cambiando el scriptData "onSelect" por lo que cuando se selecciona un nuevo archivo:

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

que parece hacer el truco

+1

Gracias. Esto no funciona para mi. Pregunta, en su configuración ¿está utilizando automático: verdadero y/o múltiple: verdadero? Me pregunto si esos son los culpables. Y si es así, ¿hay una solución alternativa? La carga múltiple es un requisito para mí – Jonathan

+0

^^ seguimiento; ¿esto funcionó para usted con ajuste automático y múltiple en verdadero? – Jonathan

+0

Me he configurado automáticamente como verdadero – Jorre

0

que tenía el mismo problema. Después de horas de dolor, finalmente lo resolví manipulando manualmente la secuencia de flashvars que se pasa al objeto de carga de flash.

Teniendo en cuenta este elemento HTML:

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

procedo a iniciar uploadify en ese elemento con esto:

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

Esto añade un elemento <object><param> con varios hijos a su archivo HTML. Uno de estos elementos <param> se denomina "flashvars" y su valor de cadena contiene la ruta de la carpeta de carga. Por lo tanto, con el fin de cambiar la carpeta de valor, busco esa cadena de la carpeta "=" argumento así:

// 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+"&"); 

Espero que esto ayude.

Cuestiones relacionadas