2012-02-22 23 views
13

Estoy tratando de trabajar con el plugin blueimp jquery-file-upload. Parece ser una buena persona que carga, pero la documentación no es útil.plugin jquery-file-upload: ¿Cómo cambiar la ruta de carga?

Cuando trabajo con la secuencia de comandos de demostración descargable, todo está bien. Pero, cuando quiero cambiar la ruta de carga, eso no funciona.

He tratado de cambiar, en index.php, la ruta de la acción, así:

form id="fileupload" action="../uploads/" method="POST" enctype="multipart/form-data" 

y añadí las carpetas "Archivos" y "miniaturas" en mi carpeta de "archivos".

La llamada GET está bien, que puedo ver en Firebug:

GET http://localhost/alliance_pretests/uploads/ 200 OK -8ms 

Pero cuando inicio la acción de carga, el POST me responde (aún en Firebug):

POST http://localhost/alliance_pretests/uploads/ 404 Not Found 44ms 

I no cambió nada más. ¿Qué olvidé?

¿Por qué la llamada GET ve la carpeta, pero no la llamada POST?

Gracias de antemano. Saludos cordiales.

+0

¿cómo está usando este complemento? ¿Implementaste el lado del servidor o usaste la versión Node.js? necesita actualizar el backend para especificar el directorio de carga – ManseUK

Respuesta

18

La acción de formulario no es la carpeta donde debe estar la carpeta de carga. La acción de formulario es el script donde se envían los datos después de enviarlos. (Consulte más información sobre las acciones de formulario http://www.w3schools.com/tags/att_form_action.asp)

Intente encontrar una carpeta de destino para cargas o busque en el script para eso.

Actualización: después de descargar la biblioteca

Debe buscar en el servidor/php/upload.class.php y hay que tener algunas variables con la ubicación de la carpeta de carga:

'script_url' => $this->getFullUrl().'/', 
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', 
'upload_url' => $this->getFullUrl().'/files/', 

Debes reemplazar /files/ con tu propia carpeta de carga.

+0

Entendí su explicación y cambié mi código. Eso funciona bien ahora. Muchas gracias. Pero, ¿cómo declarar una carpeta de un nivel superior, como "../uploads"? Lo he intentado, pero parece que no funciona (error JSON). – mlh

+1

¿Cómo lo modificó? Debería ser como ''upload_url' => '../ uploads/'' – Mike

+2

No funcionaba porque no eliminé $ this: 'upload_url' => $ this -> '../ uploads /' Ahora está bien. ¡Muchas gracias! – mlh

21

Aunque el @mugur respuesta suministrada es correcta, mirando a la clase php suministrado con la biblioteca el primer parámetro en el método de construcción es "opciones" y declarando una matriz asociativa como sigue:

$options = array('upload_dir'=>'upload/directory/of/your/choice', 'upload_url'=>'upload/directory/of/your/choice'); 

y pasándolo como el primer parámetro al crear instancias de la clase:

$upload_handler = new UploadHandler($options); 

le permitirá cambiar el directorio de carga cada vez que se utiliza la clase en lugar de modificar el código fuente.

+0

Pero, ¿dónde agregas este código? Gracias –

+2

Debe agregar estas opciones al archivo donde está instanciando la clase, si está usando el ejemplo, entonces es [index.php] (https://github.com/blueimp/jQuery-File-Upload/blob /master/server/php/index.php). Se vería algo como: 'error_reporting (E_ALL | E_STRICT);' ' require ('UploadHandler.php');' ' $ opciones = array ('upload_dir' => 'subir/directorio/of/your/choice ', ' '' upload_url '=>' upload/directory/of/your/choice '); ' ' $ upload_handler = new UploadHandler ($ opciones); ' –

+0

¿Qué valor debería? dar 'upload_url' si quiero subir mis archivos fuera de la carpeta' www'? – Adam

Cuestiones relacionadas