[英]How I can get in PHP to image uploaded by jQuery
我正在使用带有图像上传选项的简单表格。 我在通过PHP代码中的jQuery访问上传的文件时遇到问题。
如何检查PHP中上传的文件名,大小?
HTML:
<form id="conversion_form" method="post" action="#" enctype="multipart/form-data">
<input type="text" id="prize_name" size="25" value="">
<textarea rows="8" cols="75" name="lista_losowanie" id="lista_losowanie">
<input id="file_img" type="file" name="image">
<div id="uploadPreview"></div>
</div>
<p><input id="button_draw" class="btn btn-lg btn-success" type="submit" value="Losowanie" /></p>
</form>
这是我的Ajax,发送priest_name效果很好,但是上传的图像有问题。 如何在Ajax中发送和在PHP中接收?
AJAX:
$('#button_draw').click(function(e) {
e.preventDefault();
var formData = new FormData();
// let's just take the first image
var file = $('#file_img')[0].files[0];
// but you also need to add the other fields to formData
var lista = $(this).closest('form').find('#lista_losowanie').val();
var prize_name = $(this).closest('form').find('#prizename').val();
formData.append('prize_img', file);
formData.append('lista', lista);
formData.append('prize_name', prize_name);
console.log(formData);
alert (formData);
$.ajax({
context: this,
url: './inc/new_draw.php',
data: formData,
type: 'POST',
success: function(response){
//odpowiedź serwera
//Trzeba sparsować zwrot
var json = JSON.parse(response);
if(json.odp == 1){
}
if(response == 2){
}
},
error: function(x,n,o){
}
});
});
PHP:
<?php
include ("config.php");
$prize_name = mysqli_real_escape_string($con, $prize_name);
$prize_img = mysqli_real_escape_string($con, $prize_img);
//HOW I CAN GET ACCESS TO UPLOADED IMAGE? HOW I CAN CHECK FILE SIZE ETC. THIS BELOW DOESNT WORK.
$file_size = $prize_img['size'];
$file_name = $prize_img['name'];
$file_type = $prize_img['type'];
echo $file_size;
if ($prize_name == NULL) {
$problem = TRUE;
$problem_code = 1;
echo json_encode($dodano);
}
?>
Ajax方法确实支持文件上传,但仅在较新的浏览器中。 对于您可以使用XmlHttpRequest2
的对象,并在你的情况最好是使用FormData
对象将包含所有要提交,看到这个数据(+图像) 条 。
如果要这样做,可以通过HTML5 File API
来获取文件,该示例很简单:
var formData = new FormData();
// let's just take the first image
var file = $('#fileinput').files[0];
// but you also need to add the other fields to formData
var lista = $(this).closest('form').find('#lista_losowanie').val();
var prize_name = $(this).closest('form').find('#prizename').val();
formData.append('prize_img', file);
formData.append('lista', lista);
formData.append('prize_name', prize_name);
// now you pass the formData object as data
$.ajax({
context: this,
url: './inc/new_draw.php',
data: formData,
// ....
});
如您所见,文件是一个数组 -因此,如果您在file input field
上使用multiple select
,则可以简单地遍历该数组以获取所有选定的图像。
在PHP方面,如果使用FormData
,则需要使用$_FILES
数组。 参见此处: PHP $ _FILES数组 。
从上面的示例中,您将像这样访问数组(也添加了扩展名):
$size = $_FILES['prize_img']['size']
$name = $_FILES['prize_img']['name']
$type = $_FILES['prize_img']['type']
$extension = pathinfo($name, PATHINFO_EXTENSION);
使用XHR2
您还可以做一些很棒的事情,例如跟踪上载文件的进度(进度条)。 如果您需要与旧版浏览器兼容,则可以使用iframes
方法: example 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.