我是处理文件的新手,我想在这种情况下只使用一种输入类型file
上传多个文件,但这个输入不在form
标签内,这个工作当我点击按钮
<input type="file" class="form-control" id="imagenArticulo" multiple="multiple">
当我的图像被选中时我按下按钮并执行此操作
$('#guardarArticulo').click(function(e) {
e.preventDefault();
let imagen = $('#imagenArticulo').prop('files');
console.log(imagen);
let form_data = new FormData();
form_data.append('imagen', imagen);
$.ajax({
type: 'post',
cache: false,
contentType: false,
processData: false,
url: '../includes/productos/guardar_producto.php',
data: form_data,
dataType: 'json',
beforeSend: function() {
},
success: function(respuesta) {
console.log(respuesta);
if (respuesta.tipo == 0) {
window.location.reload(true);
}
if (respuesta.tipo == 1) {
//do soemthing
}
}
});
});
点击后,变量console.log
的第一个imagen
显示此
最后用PHP尝试处理它们时我会这样做
if (!is_null($_FILES['imagen']['name'])) {
if ($_FILES['file']['error'] == 0) {
if (!is_dir($ruta)) {
mkdir($ruta);
mkdir($ruta . '/original');
mkdir($ruta . '/thumbnail');
}
$numero_de_imagenes = count($_FILES['imagen']['tmp_name']);
for ($i = 0; $i < $numero_de_imagenes; $i++) {
$imagen = $_FILES['imagen']['name'][$i];
$img_tmp = $_FILES['imagen']['tmp_name'][$i];
$formato = strtolower(pathinfo($imagen, PATHINFO_EXTENSION));
if (in_array($formato, $formatos_validos)) {
$ext_tmp = explode('.', $imagen);
$imagen = sha1($imagen.$random) . '.' . end($ext_tmp);
$ruta = $ruta . '/original/' . $imagen;
move_uploaded_file($img_tmp, $ruta);
list($ancho, $alto) = getimagesize($ruta);
if ($_FILES['imagen']['size'][$i] > 524288 || $ancho > 500 || $alto > 500) {
comprimir($imagen, $fuente, $fuente, 500, 500, 90);
}
comprimir($imagen, $fuente, $destino, 100, 100, 90);
}
}
}
}
我以前使用过这段代码,但只是为了一个文件,新的部分是添加for
循环,但是当我按下点击时,ajax响应没有显示任何内容,没有显示错误或其他什么,我想知道我错过了什么或做错了,算法之前的代码我试图打印$_FILES['imagen']
以查看它是否有内容但是没有显示任何内容,我希望你能帮助我,谢谢。