使用的外部插件:
jquery.form.js(表单提交) :http://malsup.com/jquery/form/#download
jquery.json.min.js(解析json数据):http://www.oschina.net/p/jquery-json
表单代码部分:
type=file id=img name=file> type=hidden name=member_idvalue=/> type=buttonvalue=上传 >submitimgform()/>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 : , 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’,将其替换成空字符串$search = 'null'; $replace = ''; $returndata = str_replace($search, $replace, $json_str);// testadddataintotesttable(null,$returndata);exit($returndata);}
以上就介绍了thinkphp(php)+ajax上传图片,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
