所以,我使用的是我在WWW上下載的jQuery上傳腳本。xmlhttprequest請求已發送,但代碼未執行?
這是我的JavaScript代碼:
$(document).ready(function()
{
var settings = {
url: "upload.php",
method: "POST",
allowedTypes:"pdf,xls,doc,docx,xlsx",
fileName: "name",
multiple: true,
onSuccess:function(files,data,xhr)
{
$("#status").html("<font color='green'>Upload is successed</font>");
},
onError: function(files,status,errMsg)
{
$("#status").html("<font color='red'>Upload is failed: " + errMsg + "</font>");
},
showDelete:true,
deleteCallback: function(data,pd)
{
for(var i=0;i<data.length;i++)
{
$.post("delete.php",{op:"delete",name:data[i]},
function(resp, textStatus, jqXHR)
{
//Show Message
$("#status").html("<font color='red'>File deleted.</font>");
});
}
pd.statusbar.hide(); //You choice to hide/not.
}
};
$("#mulitplefileuploader").uploadFile(settings);
});
這是我的 「upload.php的」:
<?php
include_once("_assets/_pages/db.php");
$output_dir = "_files/";
if(isset($_FILES["myfile"]))
{
$ret = array();
$error = $_FILES["myfile"]["error"];
//You need to handle both cases
//If Any browser does not support serializing of multiple files using FormData()
if(!is_array($_FILES["myfile"]["name"])) //single file
{
$fileName = $_FILES["myfile"]["name"];
move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName);
$ret[]= $fileName;
$sql = 'INSERT INTO `Files` (FileName, UploadDate, DownloadCount) VALUES ($filename, CURRENT_TIMESTAMP, 0)';
$db->query($sql);
}
else //Multiple files, file[]
{
$fileCount = count($_FILES["myfile"]["name"]);
for($i=0; $i < $fileCount; $i++)
{
$fileName = $_FILES["myfile"]["name"][$i];
move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
$ret[]= $fileName;
$sql = 'INSERT INTO `Files` (FileName, UploadDate, DownloadCount) VALUES ($filename, CURRENT_TIMESTAMP, 0)';
$db->query($sql);
}
}
echo json_encode($ret);
}
?>
我upload.php的是不是把文件放到 「_files /」,也不插入任何東西到我的數據庫? 我在做什麼錯?
其他問題:你推薦任何其他設計良好的(引導友好的)jQuery文件上傳處理程序?
瀏覽器控制檯中的任何JS錯誤? PHP返回什麼? – 2015-02-09 13:53:04
沒有JS錯誤,「網絡」告訴我,我的upload.php有一個很好的(代碼:200)連接。文件現在正在上傳smh,但沒有任何內容存儲在我的數據庫中... – PoTTii 2015-02-09 13:57:25
Yep代碼是200,但PHP的實際響應是什麼?意思是,數據返回? PHP正在尋找'isset($ _ FILES [「myfile」])',但是,您從不在JS中定義任何名爲'myfile'的東西。我的猜測是你的'if(isset())'被純粹跳過,沒有錯誤,狀態200 OK。 – 2015-02-09 14:26:05