【发布时间】:2018-01-17 14:13:33
【问题描述】:
我正在尝试使用 jQuery 和 php 在 Sweet Alert 2 模式中创建文件上传器。这是我的代码,但它不工作:我怎样才能让它工作?
谢谢
HTML(使用 Sweet Alert 2 打开模式的按钮):
<button class="bx--btn bx--btn--primary" type="button" id="swal_upload">Apri</button>
JavaScript:
$('#swal_upload').click(function(){
var api = 'api/UploadFile.php';
swal({
title: "Carica immagine",
html: '<input id="fileupload" type="file" name="userfile">'
}).then(function() {
var formData = new FormData();
formData.append('userfile', $('#fileupload').val().replace(/.*(\/|\\)/, ''));
console.log(formData);
$.ajax({
type: 'POST',
url: api,
data: formData,
dataType: 'json',
processData: false,
contentType: false,
headers: {"Content-Type":"form-data"},
async: true,
success: function(result){
console.log("OK client side");
console.log(result.Response);
}
});
})
});
php (api/UploadFile.php):
$entered = "PHP started";
$tmpFilePath = $_FILES['userfile']['tmp_name'];
$uploaddir = 'public/';
if ($tmpFilePath != ""){
$newFilePath = $uploaddir . basename($_FILES['userfile']['name']);
if(move_uploaded_file($tmpFilePath, $newFilePath)) {
$uploaded = "Upload OK server side";
} else {
$uploaded = "Upload failed server side";
}
}
// Prepare response, close connection and send response to front-end
$array['Response'] = array(
'entered' => $entered,
'tmp_path' => $tmpFilePath,
'new_path' => $newFilePath,
'file_name' => $_FILES['file']['name'],
'uploaded' => $uploaded
);
echo json_encode($array);
我在控制台的输出是:
FormData {}原型:FormData 好的客户端 {输入:“PHP 开始”,tmp_path:null,new_path:null,file_name:null,上传:null} 输入:“PHP 开始” 文件名:空 新路径:空 tmp_path:null 上传:空 原型:对象
如您所见,php 启动了,但没有文件传递到服务器。
【问题讨论】:
-
当问题陈述很简单时,很难提供解决方案,"it doesn't work"。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。
-
这种方式不能使用ajax上传数据。尤其是 "Content-Type":"form-data"
-
@PaunNarcisIulian 你有解决办法吗?
标签: javascript php jquery file