thinkphp(php)+Ajax上傳圖片

來源:互聯網
上載者:User
使用的外部外掛程式:

  • jquery.form.js(表單提交) :http://malsup.com/jquery/form/#download

  • jquery.json.min.js(解析json資料):http://www.oschina.net/p/jquery-json

表單代碼部分:

"show_photo_upload_img" src="" alt=""/>

js代碼:

<script>functionsubmitImgForm(){if ($("#img").val() == "") {            alert("請選擇一個圖片檔案,再點擊上傳。");            return;        }        var file_form = $("[tag='img_file_upload']");        var show_img = $("[tag='show_photo_upload_img']");        var options = {            type : 'post',            url : "<{:U('File/fileUpload')}>",            dataType: 'text',            contentType: "application/json; charset=utf-8",            beforeSubmit:function(){              alert('正在上傳');            },            success:function(data) {var json_obj = JSON.parse(data);                show_img.attr('src',json_obj.img_path);                alert(json_obj.error);            },            error:function(XmlHttpRequest, textStatus, errorThrown){                alert(textStatus);                alert(errorThrown);            }        };        file_form.ajaxSubmit(options);    }script>

後台php部分:

functionfileUpload(){$config = C('FILE_UPLOAD_CONFIG');        //附帶的資訊$request_data = I('post.');//        show_bug($request_data);$member_id = $request_data['member_id'];        if(empty($the_file_usage)){            $the_file_usage = $file_usage['DOWNLOAD'];        }//        show_bug_with_exit($file_name);$file_info['member_id'] = $member_id;        $file_info['created_time'] = time();            // 上傳檔案//執行個體化上傳類,傳入上面的配置數組$uploader = new Upload($config, 'Local');//            $uploader->saveName = $file_uuid;$info = $uploader->upload($_FILES);//        show_bug_with_exit($info);//這裡判斷是否上傳成功if ($info) {                //// 上傳成功 擷取上傳檔案資訊foreach ($infoas &$file) {                    //拼接出上傳目錄$file['rootpath'] = __ROOT__ . ltrim($config['rootPath'], ".");                    //拼接出檔案相對路徑$file['filepath'] = $file['rootpath'] . $file['savepath'] . $file['savename'];                }                //這裡可以輸出一下結果,相對路徑的鍵名是$info['upload']['filepath']$filepath = $file['filepath'];//                show_bug_with_exit($filepath);$file_info['file_path'] = $filepath;                $save_file_in_DB = $this->saveFileInfoIntoDB($file_info);                //如果檔案資料往資料庫中儲存失敗,則刪除檔案if(!$save_file_in_DB){                    unlink($filepath);                    $return_data['error'] = '檔案上傳失敗,請重試';                    echo json_encode($return_data);                }                $return_data['error'] = '檔案上傳成功';                $return_data['img_path'] = $filepath;                $return_data['img_id'] = $save_file_in_DB;                jsonReturn($return_data);            } else {                //輸出錯誤資訊$error_msg = $uploader->getError();                $return_data['error'] = $error_msg;                jsonReturn($return_data);            }    }    functionsaveFileInfoIntoDB($file_info){$file = M('File');        $rs_u_file = $file->add($file_info);        $file_id = $file->getLastInsID();        if(!$rs_u_file){            returnfalse;        }        return$file_id;    }

設定檔:

'FILE_UPLOAD_CONFIG'=>array(        'mimes' => '', //允許上傳的檔案MiMe類型'maxSize' => 6 * 1024 * 1024, //上傳的檔案大小限制 (0-不做限制)'exts' => array('jpg', 'gif', 'png', 'jpeg'),// 設定附件上傳類型'autoSub' => true, //自動子目錄儲存檔案'subName' => array('date', 'Y-m-d'), //子目錄建立方式,[0]-函數名,[1]-參數,多個參數使用數組'rootPath' => './Uploads/', //儲存根路徑'savePath' => '', //儲存路徑'saveName'   =>    array('uniqid',''),    ),

function.php檔案

/** * 返回json格式的資料到用戶端 * @access protected * @param mixed $data 要返回的資料 * @return void */functionjsonReturn($data){$json_str = json_encode($data);    // 返回JSON資料格式到用戶端 包含狀態資訊    header('Content-Type:application/json; charset=utf-8');    //處理json中包含的‘null’,將其替換成Null 字元串$search = 'null';    $replace = '""';    $returndata = str_replace($search, $replace, $json_str);//  testAddDataIntoTestTable(null,$returndata);exit($returndata);}

以上就介紹了thinkphp(php)+Ajax上傳圖片,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.