使用Ajax怎么上傳圖片并預(yù)覽?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
最近在使用ThinkPHP5開發(fā)項目中客戶有一個需求是在圖片上傳時附帶預(yù)覽功能。雖然現(xiàn)在有很多的插件能實現(xiàn),但是還是覺得自己寫比較好。我們知道,圖片上傳需要一個input:file表單
當我們點擊表單的時候提示選擇需要上傳的圖片。但是此需求我們分析一下,可以在點擊圖片的時候使用JS實現(xiàn)預(yù)覽功能,并且樓主也是這樣做的。代碼如下:
function getFileUrl(sourceId) { var url; url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0)); return url; } function preImg(sourceId, targetId) { var url = getFileUrl(sourceId); var imgPre = document.getElementById(targetId); imgPre.src = url; }
但是這樣的話會涉及很多兼容問題。所以就想到了Ajax,在圖片上傳時,使用Ajax技術(shù)。將圖片上傳到服務(wù)器,再由服務(wù)器返回給我們圖片的上傳地址,然后添加到img標簽中去。過程雖然麻煩了點,但是親測不會有兼容問題。
需要發(fā)送Ajax請求的話,當然input:file表單是不能實現(xiàn)我們的需求的,因此,我們需要給表單關(guān)聯(lián)一個單擊事件去幫我們進行Ajax請求并選擇圖片
當我們點擊上傳圖片這個button按鈕時觸發(fā)input:file選擇圖片實現(xiàn)Ajax上傳
這里我們采用FormData對面進行表單提交,然后服務(wù)器端接收
public function uppic() { $file = request()->file('f'); $info = $file->move(ROOT_PATH . 'public/uploads/avatar'); $a=$info->getSaveName(); $imgp= str_replace("\\","/",$a); $imgpath='uploads/avatar/'.$imgp; $banner_img= $imgpath; $response = array(); if($info){ $response['isSuccess'] = true; $response['f'] = $imgpath; }else{ $response['isSuccess'] = false; } echo json_encode($response); }
這里會返回圖片上傳的url路徑:$response['f] = $imgpath
;現(xiàn)在我們要做的就是將這個url寫進前臺HTML部分進行一個顯示
在JS中添加
$('#show').html(result1);
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。