Rumah > Soal Jawab > teks badan
Tulis fungsi muat naik fail yang agak rendah Anda perlu mengklik Muat naik untuk memuat naiknya ke pelayan.
Tetapi selepas ujian, ia masih gagal untuk memuat naik saya tidak tahu apa yang berlaku? Di bawah ialah kod saya:
html
<body>
<p class="toolbar1">
<a href="javascript:;" id="upload" class="a-upload mr10"><input id="changeFile" type="file" name="myFiles" id="">点击这里上传文件</a>
<p class="showFileName mr10"></p>
<button id="uploadBtn" type="button" class="btn btn-primary">上传</button>
</p>
</body>
php:
<?php
//做个路由 action为url中的参数
$action = $_GET['action'];
switch($action) {
case 'upload_file':
upload();
break;
}
function upload(){
// 获取上传的图片
$pic = $_FILES['myFiles']['tmp_name'];
$upload_ret = false;
if($pic){
// 上传的路径,建议写物理路径
$uploadDir = "../upload_files";
// 创建文件夹
if(!file_exists($uploadDir)){
mkdir($uploadDir, 0777);
}
// 用时间戳来保存图片,防止重复
$targetFile = $uploadDir . '/' . time() . $_FILES['myFiles']['name'];
// 将临时文件 移动到我们指定的路径,返回上传结果
$upload_ret = move_uploaded_file($pic, $targetFile) ? true : false;
}
return $upload_ret;
}
?>
js:
$(function() {
//上传图片
$('#uploadBtn').on('click',function(){
/*alert('444');*/
uploadFiles();
})
function uploadFiles(){
//上传文件接口
var uploadUrl = "./php/data.php?action=upload_file";
//选择的文件
var files = document.getElementById('changeFile').files[0];
var fileArr = [files];
//经过调试是不进ajax的
$.ajax({
type:"post",
url:uploadUrl,
data:fileArr,
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function(data) {
console.log(data);
},
error: function(data){
}
});
}
}
Selepas penyahpepijatan, ajax tidak dimasukkan dalam js Saya tidak tahu apa masalahnya? Tolong bantu, terima kasih!
Dalam php, bagaimana untuk mendapatkan nilai $pic = $_FILES['myFiles']['tmp_name'];
$pic? Semasa penyahpepijatan, saya mendapati bahawa nilai ini tidak boleh diperolehi. Dalam js, saya menukar maklumat fail yang diperoleh ke dalam tatasusunan dan menghantarnya melalui siaran ajax. Bagaimanakah cara saya menghantar tatasusunan ini kepada php?
漂亮男人2017-05-24 11:32:56
Anda menghantar data bercampur, cuba tukar jenis kandungan dan prosesData kepada palsu
$.ajax({
type:"post",
url:uploadUrl,
data:{ "yourfiles": files} //这里改成obj对象,
dataType: 'json',
contentType: false,
processData:false,
success: function(data) {
console.log(data);
},
error: function(data){
}
});
迷茫2017-05-24 11:32:56
processData hendaklah ditetapkan kepada false
Anda menggunakan Ajax untuk menyerahkan Anda perlu menggunakan formData dengan
.var file = document.getElementById('changeFile').files[0]
var uploadUrl = "./php/data.php?action=upload_file"
var fd = new FormData()
fd.append('myFiles', file)
$.ajax({
type:"post",
url:uploadUrl,
data: fd,
processData: false,
contentType: false,
success: function(data) {
console.log(data);
},
error: function(data){
}
})