no hace falta el 'POST', debido a que mi scipt (hecho en jquery) es el siguente:
Código HTML:
$("#upArchivos").click(function(){
var formData = new FormData($(".formArchivos")[0]);
var message = "";
$.ajax({
url: 'upload.php',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
beforeSend: function(){
message = $("<span class='before'>Subiendo Archivo(s), por favor espere...</span>");
showMessageSub(message)
},
//una vez finalizado correctamente
success: function(data){
message = $("<span class='success'>Archivo(s) Cargado(s)"+data+"</span>");
showMessageSub(message);
},
//si ha ocurrido un error
error: function(){
message = $("<span class='error'>Ha ocurrido un error.</span>");
showMessageSub(message);
}
});
});
el archivo upload.php al que se hace referencia:
Código PHP:
<?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
$cantidad = count($_FILES["archivo"]);
$respuesta=array();
for ($i=0; $i < $cantidad; $i++) {
$file = $_FILES['archivo']['name'][$i];
$respuesta[$i][0]=$file;
//comprobamos si existe un directorio para subir el archivo si no es así, lo creamos
if(!is_dir("files/"))
mkdir("files/", 0777);
$destino = "files/".$file;
//comprobamos si el archivo ha subido
if ($file && move_uploaded_file($_FILES['archivo']['tmp_name'][$i],$destino))
{
sleep(2);//retrasamos la petición 2 segundos
$respuesta[$i][1]='true';
}else{
$respuesta[$i][1] = 'false';
}
}
echo json_encode($respuesta);
}else{
throw new Exception("Error Processing Request", 1);
}
de hecho aqui tengo otro problema, ya que no he logrado que el script interprete la respuesta en json.
y el Formulario:
Código HTML:
<form enctype="multipart/form-data" class="formArchivos">
<input name="archivo[]" type="file" id="archivos" multiple="true"/>
<input type="button" value="Subir archivos" id="upArchivos"/>
</form>
lo raro es que si subo solo un archivo me toma 5, aunque los otros con nombre "null" y si subo mas de 5 archivos solo sube 5, sin marcar ningun error.