首頁 > php框架 > ThinkPHP > 詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除

詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除

藏色散人
發布: 2021-03-23 13:43:30
轉載
2497 人瀏覽過

下面由thinkphp教學欄位來介紹thinkPHP為大家介紹thinkPHP利用ajax非同步上傳圖片並顯示、刪除方法,希望對需要的朋友有幫助!

thinkPHP利用ajax非同步上傳圖片並顯示、刪除

#最近學習tp5的過程中,專案中有個發文功能,選擇主題圖片。如下:

詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除

利用原始的檔案上傳處理,雖然透過原始js語句能即時顯示上傳圖片,但是這樣的話會涉及很多相容問題。使用ajax技術,實現選擇性刪除所選圖片功能,並不會有相容問題。


表單文件​​form:

登入後複製
    主题图片:                   图片上传               

需要發送Ajax請求的話,當然表單是不能實現我們的需求的,因此,我們需要給表單關聯一個單擊事件去幫我們進行Ajax請求並選擇圖片。
當我們點擊上傳圖片這個button按鈕時觸發選擇圖片實作Ajax上傳

JavaScript程式碼:

<script></script>
<script>
    function upimg(obj)
    {
        if( obj.value == "" ) {
            return;
        }
        var formdata = new FormData();
        //<input type="file" name="img" value="" />
        formdata.append("img" , $(obj)[0].files[0]);//获取文件法二
        $.ajax({
            type : &#39;post&#39;,
            url : &#39;/home/note/upimg&#39;, //接口
            data : formdata,
            cache : false,
            processData : false, // 不处理发送的数据,因为data值是Formdata对象,不需要对数据做处理
            contentType : false, // 不设置Content-type请求头
            success : function(response){
                console.log(response);
                var html = &#39;<p style="position: relative;margin-right: 20px;margin-bottom: 15px;width: 132px;display: inline-block;border: 1px solid #CCC;background:#EEE;">&#39;
                        +&#39;<span style="display: block;width: 120px;height: 80px;border: 1px solid #F2F1F0;margin: 5px;overflow: hidden;">&#39;
                        +&#39;<img  src="&#39;+response+&#39;"   style="max-width:90%" / alt="詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除" >&#39;
                        +&#39;&#39;
                        +&#39;<input type="hidden" name="imgs[]" value="&#39;+response+&#39;" />&#39;
                        +&#39;<a onclick="delImg(this);" style="z-index: 10;display: block;top: -8px;cursor:pointer;right: -8px;position:absolute;width: 20px;height: 20px;background: #CCC;border-radius:100%;text-align:center;line-height: 20px;border: 1px solid #C1C1C1;color: #555;">X&#39;
                        +&#39;&#39;;

                $(&#39;#img-list-box&#39;).append(html);
            },
            error : function(){ }
        });
    }

    function delImg(obj)
    {
        $(obj).parent(&#39;p&#39;).remove();
    }
</script>
登入後複製

點擊選擇圖片之後就是交給伺服器端處理了。
php介面檔:

    public function upimg()
    {
        //验证
        $file = request()->file('img');
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
            if($info){
                // 成功上传后 获取上传信息
                $img_src = '/uploads/'.$info->getSaveName();
                echo $img_src; //返回ajax请求
            }else{
                // 上传失败获取错误信息
                $this->error($file->getError());
            }
        }
    }
登入後複製

改善後的效果圖:

詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除

#

以上是詳解thinkPHP利用ajax非同步上傳圖片並顯示、刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板