【发布时间】:2015-11-19 02:13:10
【问题描述】:
我正在尝试在 php.ini 中访问上传的文件。我有两种用户可以上传文件的方式。既可以拖放,也可以点击上传。我正在使用 ajax 将数据传递给 php。我在 JQuery 中访问文件的方式是
new FormData($('#uploadform')[0])
然后在php中我做了print_r($_FILES)。当用户点击上传时,它会以应有的方式打印出来。但是当用户拖放文件时,它会打印出以下内容:
Array
(
[img] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)
)
我也试过(用于拖放)
evt.originalEvent.dataTransfer.files[0];
我得到了一个完全空的数组。
如何将“拖放”图像传递给 php?
$(document).ready(function() {
"use strict";
$('#uploadform').on('change', function(evt) {
var formData = new FormData($(this)[0]);
$.ajax({
url: $(this).attr("action"),
context: document.body,
data: formData,
type: "POST",
timeout: 15000,
contentType: false,
processData: false,
success: function(data) {
// Perform something upon success
},
error: function(jqXHR, textStatus) {
// Perform something upon error
}
});
return false;
});
$('#lbl').on('dragover', function(evt) {
evt.stopPropagation();
evt.preventDefault();
});
$('#lbl').on('drop', function(evt) {
evt.stopPropagation();
evt.preventDefault();
var formData = new FormData($(this)[0]);
// Also tried:
// var formData = evt.originalEvent.dataTransfer.files[0];
$.ajax({
url: $('#uploadform').attr("action"),
context: document.body,
data: formData,
type: "POST",
timeout: 15000,
contentType: false,
processData: false,
success: function(data) {
// Perform something upon success
},
error: function(jqXHR) {
// Perform something upon error
}
});
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="upload.php" enctype="multipart/form-data" method="POST" id="uploadform">
<input id="openFile" name="img" type="file" />
<label for="openFile" name="lblImage" id="lbl"></label>
</form>
【问题讨论】:
标签: javascript php jquery ajax forms