[英]How can I upload an image file to a php background script, i.e, using ajax
我正在嘗試使用ajax將圖像文件上傳到服務器。 但是,到目前為止,我只使用ajax將數據傳輸到后台php腳本。 我沒有用文件這樣做。但是,我正在嘗試如下: -
<form id="imageUploadForm" action="profileThis.php" method="POST"
enctype="multipart/formdata">
<input type="file" id="boozeImgFile" name="boozeImgFile" >
<input type="button" onclick="uploadImage()" value="Upload">
</form>
我的ajax代碼如下
$("imageUploadForm").request(
{
method:'post',
parameters:{category:$("category").value, categoryId:$("categoryId").value, userId:
$("userInSession").value, uploadImage:'true'},
onComplete:function()
{
alert("successfully uploaded to profilethis.php");
},
onSuccess:function(ajax)
{
alert(ajax.responseText);
},
onFailure:ajaxFailure,
onException:ajaxFailure
});
但是,當我嘗試使用$filename=$_FILES["boozeImgFile"]["name"]
在后台腳本中檢索它時,它無法正常工作
我的個人資料這個.php看起來像這樣
if(isset($_REQUEST['uploadImage']))
{
$name=$_FILES["boozeImgFile"]["name"];
$tempName=$_FILES["boozeImgFile"]["tmp_name"];
$size=$_FILES["boozeImgFile"]["size"];
$type=$_FILES["boozeImgFile"]["type"];
if(($type=="image/jpg"||$type=="image/jpeg"||$type=="image/pjpeg")&& ($size>0&&$size<=4096000))
{
$userId=clearSpecialChars($_REQUEST['userId']);
$tempName=$_FILES["boozeImgFile"]["tmp_name"];
$category=clearSpecialChars($_REQUEST['category']);
$categoryId=clearSpecialChars($_REQUEST['categoryId']);
$name="img_".$userId."_".$filename;
$rootDir="C:/xampp/htdocs";
$dir="/boozeimg/".$category."/".$categoryId;
$fullDirectory=$rootDir.$dir;
$realPath=$dir."/".$name;
$fullPath=$rootDir.$dir."/".$name;
if(is_dir($fullDirectory))
{
move_uploaded_file($tempName, $fullPath);
}
else
{
mkdir($fullDirectory,0777,true);
move_uploaded_file($tempName, $fullPath);
}
}
在profileThis.php中,if條件中的第一行未到達,但if條件本身確實達到了
那么快速的答案就是你做不到。 您無法使用AJAX上傳文件。 您可以做的是讓表單的目標成為隱藏的iframe並將表單提交給該表單。 它在結果上基本上是相同的,但在技術上完全不同。 大多數人仍然使用術語ajax(包括我即將推出的url),但它絕對不是ajax。 這是一個簡短教程的鏈接:
我將研究使用一個名為Uploadify的酷jQuery插件。 如果你不了解這個過程的所有部分,但是網站有很好的文檔/示例,總體來說這是一個非常酷的插件,這看起來有點復雜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.