Html表单
<form enctype="multipart/form-data" method="post">
<input name="files[]" type="file" id="upload_file" /><br/>
<input type="button" id="upload" value="Upload File" />
</form>
然后用ajax发送到php
$("#upload_file").hide();
$("#upload").click(function() {
$("#upload_file").click();
})
$('#upload_file').change(function(e) {
e.preventDefault();
var formData = new FormData($(this).parents('form')[0]);
$.ajax({
url: '___ajax_upload_files.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
return myXhr;
},
success: function (data) {
$('#upload_span').html( data );
},
data: formData,
cache: false,
contentType: false,
processData: false
});
return false;
})
然后在这里处理php(实际代码有点不同)
if ( !empty( $_FILES['files']['name'] ) ) {
$target_path = '../images/';
$ext = explode('.', basename( $_FILES['files']['name'] ) );
$target_path = $target_path . md5(uniqid()) . "." . $ext[count($ext)-1];
$val_img = substr( $target_path , 10 );
//Here code to display uploaded image
if(move_uploaded_file($_FILES['files']['tmp_name'][$i], $target_path)) {
echo '<a href=""><img src="../images/'. $val_img. '" ></a> ';
}
}
问题是,每个$('#upload_file').change(function(e) {
上传一个新文件,echo '<a href=""><img src="../images/'. $val_img. '" ></a> ';
只上传新上传的文件。但如何回应也普遍上传文件?
目前认为需要会话或从mysql中获取。 像foreach会话或mysql数据
echo '<a href=""><img src="../images/'. $session_or_mysql_val_img. '" ></a> ';
我的意思是:用户打开页面,点击上传;上传第一个,第二个等文件并查看所有上传的文件(现在只能看到上次上传的文件)。
有更好的解决方案吗?