使用的外部外掛程式:
表單代碼部分:
"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教程有興趣的朋友有所協助。