【发布时间】:2017-11-19 03:22:04
【问题描述】:
这是一个简单的文件上传脚本。我只需要我在 php 部分上传的文件的名称,因为我需要上传的文件 [连同它的路径] 将其插入数据库。 这是一个脚本。
index.html
<form enctype="multipart/form-data" id="form1">
<input name="file" type="file" id="id1" />
<input type="button" value="Upload" />
</form>
<progress></progress>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(':file').on('change', function() {
var file = this.files[0];
if (file.size > 10024000000) {
alert('max upload size is 1k')
}
// Also see .name, .type
});
</script>
<script>
$(':button').on('click', function() {
$.ajax({
// Your server script to process the upload
url: 'upload.php',
type: 'POST',
// Form data
data: new FormData($('form')[0]),
// Tell jQuery not to process data or worry about content-type
// You *must* include these options!
cache: false,
contentType: false,
processData: false,
// Custom XMLHttpRequest
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
// For handling the progress of the upload
myXhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) {
$('progress').attr({
value: e.loaded,
max: e.total,
});
}
} , false);
}
return myXhr;
},
});
});
</script>
上传.php
<?php
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
$name = $_FILES['file']['tmp_name'];
echo $name;//i tried this but i know as i uploaded file using ajax it will not work
?>
【问题讨论】:
-
您的问题与您从 ajax 发送和接收数据的方式有关。您必须创建一个成功函数才能在 ajax 中接收数据。
-
由于您使用 Jquery Ajax 上传文件,因此您不会在 $_FILES 变量中获取文件。该文件将在 $_POST 变量中发送一个二进制数据您应该使用 file_put_contents() 函数将内容写入文件。例如。
file_put_contents('img.jpg', $_POST['file']); -
我也尝试了下面提到的 php 代码。在那个代码中我正在打印 $_POST。它也不起作用。
-
如果你在 $_POST 中没有得到任何东西,那么你的 Ajax 代码有问题。
-
如果有任何错误,文件将不会上传。
标签: javascript php jquery ajax file-upload