新聞中心
使用Ajax怎么上傳圖片并預(yù)覽?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
最近在使用ThinkPHP5開(kāi)發(fā)項(xiàng)目中客戶有一個(gè)需求是在圖片上傳時(shí)附帶預(yù)覽功能。雖然現(xiàn)在有很多的插件能實(shí)現(xiàn),但是還是覺(jué)得自己寫比較好。我們知道,圖片上傳需要一個(gè)input:file表單
當(dāng)我們點(diǎn)擊表單的時(shí)候提示選擇需要上傳的圖片。但是此需求我們分析一下,可以在點(diǎn)擊圖片的時(shí)候使用JS實(shí)現(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; }
但是這樣的話會(huì)涉及很多兼容問(wèn)題。所以就想到了Ajax,在圖片上傳時(shí),使用Ajax技術(shù)。將圖片上傳到服務(wù)器,再由服務(wù)器返回給我們圖片的上傳地址,然后添加到img標(biāo)簽中去。過(guò)程雖然麻煩了點(diǎn),但是親測(cè)不會(huì)有兼容問(wèn)題。
需要發(fā)送Ajax請(qǐng)求的話,當(dāng)然input:file表單是不能實(shí)現(xiàn)我們的需求的,因此,我們需要給表單關(guān)聯(lián)一個(gè)單擊事件去幫我們進(jìn)行Ajax請(qǐng)求并選擇圖片
當(dāng)我們點(diǎn)擊上傳圖片這個(gè)button按鈕時(shí)觸發(fā)input:file選擇圖片實(shí)現(xiàn)Ajax上傳
這里我們采用FormData對(duì)面進(jìn)行表單提交,然后服務(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); }
這里會(huì)返回圖片上傳的url路徑:$response['f] = $imgpath
;現(xiàn)在我們要做的就是將這個(gè)url寫進(jìn)前臺(tái)HTML部分進(jìn)行一個(gè)顯示
在JS中添加
$('#show').html(result1);
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
網(wǎng)站題目:使用Ajax怎么上傳圖片并預(yù)覽-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://www.dlmjj.cn/article/djespo.html