我正在使用插件(如果有的话,我会检查手册)已经json_encodes()上传多个图像时的文件名。到目前为止,我唯一的帮助只适用于一个图像。
$response = array();
$message = "";
$files = $_POST['files'];
foreach (json_decode($files) as $key => $value) {
$image = $value->file_name;
}
if($_POST['files'] == "[]") {
$message .= "At least one image required";
}
if($message) {
$response['success'] = false;
$response['message'] = $message;
} else {
$response['success'] = true;
$response['message'] = $image;
}
echo json_encode($response);
这是jquery / ajax
var uploader = $('.picker-uploader').uploader({
upload_url: 'upload.php',
file_picker_url: 'files.php',
input_name: 'file',
maximum_total_files: 5,
maximum_file_size: 50009000,
file_types_allowed: ['image/jpeg', 'image/png'],
on_error: function(err) {
swal({
title: "Upload Failed",
text: err.messages,
type: "warning"
})
}
})
$( "#edit_pic" ).on("click", function(e) {
e.preventDefault();
var files = $('input[name="file"]').val();
$.ajax({
url: 'functions/add-support-images.php',
type: 'POST',
dataType: 'json',
data: {files: files},
beforeSend: function() {
$( "#edit_pic" ).prop("disabled", true).html("Uploading...");
},
})
.done(function(data) {
if(!data.success) {
console.log(data.message);
} else {
alert(data.message);
}
})
上传按钮位于标签中:
<div id="addimages" class="tab-pane">
<div class="form-group">
<p></p>
<label>Additional Images</label>
<p></p>
<button type="button" class="picker-uploader btn btn-primary">Select images</button>
</div>
<p></p>
<button type="submit" name="edit_pic" class="btn btn-fill btn-info" id="edit_pic">Update</button>
<p></p>
<div class="alert alert-danger" id="image_error"></div>
<div class="alert alert-success" id="image_success"></div>
</div>
</div>
然后我再次想要json_encode(),但如果我选择多个文件,它只输出上次上传的文件。我还需要遍历$ image,但不知道如何实现。
答案 0 :(得分:0)
现在只使用以下代码发送第一个输入字段的一个值:
var files = $('input[name="file"]').val();
尝试更改:
var files = $('input[name="file"]').val();
为:
var files = $('input[name="file"]').map(function() {
return $( this ).val();
}).get();
修改强>
上传文件递归的代码工作正常,但是,您必须决定如何处理这些文件。您要么收集所有文件名,要么对这些文件执行某些操作。例如,如果要存储文件名,可以这样做:
$response = array();
$message = "";
$images = array();
$files = $_POST['files'];
foreach (json_decode($files) as $key => $value) {
$images[] = $value->file_name;
}
print_r($images) // This is to see the contents of the array
当你做的时候
$image = $value->file_name;
您要覆盖$image
变量,该变量包含foreach
循环加载的先前文件名。