您好,欢迎访问一九零五行业门户网

Android客户端使用okhttp上传文件php服务器

为了更好的在应对网络访问,最近学习了一下okhttp,感觉挺方便使用的,首先要使用okhttp,需要在项目中导入okhttp-x.x.x.jar   okhttputils-x_x_x.jar   okio-x.x.x.jar 这三个jar包,下面贴出android端和服务器端关键代码:
private void uplodeimage(file mfile) { //mfile一个真实存在的图片文件 if (!mfile.exists()) { toast.maketext(mainactivity.this, 文件不存在,请修改文件路径, toast.length_short).show(); return; } okhttputils.post() .url(uplode_url) .addfile(file, mfile.getname(), mfile) .build() .execute(new callback() { @override public void onerror(call arg0, exception arg1) { system.out.println(上传文件失败); info.settext(reeor:upload error!); } @override public void onresponse(string arg0) { //system.out.println(arg0); //上传成功返回文件在服务器上的唯一路径,将此路径保存到数据库中 info.settext(arg0); //这里会返回一个包含上传文件在服务器上的唯一路径,上传成功后将这个字符串保存到数据库中去 } @override public string parsenetworkresponse(response arg0) throws exception { // todo auto-generated method stub return arg0.body().string(); } }) ; }
服务器端的代码:
filename=$filename; $this->maxsize=$maxsize; $this->allowmime=$allowmime; $this->allowext=$allowext; $this->uploadpath=$uploadpath; $this->imgflag=$imgflag; $this->fileinfo=$_files[$this->filename]; } /** * 检测上传文件是否出错 * @return boolean */ protected function checkerror(){ if(!is_null($this->fileinfo)){ if($this->fileinfo['error']>0){ switch($this->fileinfo['error']){ case 1: $this->error='超过了php配置文件中upload_max_filesize选项的值'; break; case 2: $this->error='超过了表单中max_file_size设置的值'; break; case 3: $this->error='文件部分被上传'; break; case 4: $this->error='没有选择上传文件'; break; case 6: $this->error='没有找到临时目录'; break; case 7: $this->error='文件不可写'; break; case 8: $this->error='由于php的扩展程序中断文件上传'; break; } return false; }else{ return true; } }else{ $this->error='文件上传出错'; return false; } } /** * 检测上传文件的大小 * @return boolean */ protected function checksize(){ if($this->fileinfo['size']>$this->maxsize){ $this->error='上传文件过大'; return false; } return true; } /** * 检测扩展名 * @return boolean */ protected function checkext(){ $this->ext=strtolower(pathinfo($this->fileinfo['name'],pathinfo_extension)); if(!in_array($this->ext,$this->allowext)){ $this->error='不允许的扩展名'; return false; } return true; } /** * 检测文件的类型 * @return boolean */ protected function checkmime(){ if(!in_array($this->fileinfo['type'],$this->allowmime)){ $this->error='不允许的文件类型'; return false; } return true; } /** * 检测是否是真实图片 * @return boolean */ protected function checktrueimg(){ if($this->imgflag){ if(!@getimagesize($this->fileinfo['tmp_name'])){ $this->error='不是真实图片'; return false; } return true; } } /** * 检测是否通过http post方式上传上来的 * @return boolean */ protected function checkhttppost(){ if(!is_uploaded_file($this->fileinfo['tmp_name'])){ $this->error='文件不是通过http post方式上传上来的'; return false; } return true; } /** *显示错误 */ protected function showerror(){ return (array( 'rtype'=>-30, 'rmessage'=>$this->error ) ); } /** * 检测目录不存在则创建 */ protected function checkuploadpath(){ if(!file_exists($this->uploadpath)){ mkdir($this->uploadpath,0777,true); } } /** * 产生唯一字符串 * @return string */ protected function getuniname(){ return md5(uniqid(microtime(true),true)); } /** * 上传文件 * @return string */ public function uploadfile(){ if($this->checkerror()&&$this->checksize()&&$this->checkext()&&$this->checkmime()&&$this->checktrueimg()&&$this->checkhttppost()){ $this->checkuploadpath(); $this->uniname=$this->getuniname(); $this->destination=$this->uploadpath.'/'.$this->uniname.'.'.$this->ext; if(@move_uploaded_file($this->fileinfo['tmp_name'], $this->destination)){ return array( 'rtype' => 0, 'rmessage' => $this->destination ); }else{ $this->error='文件移动失败'; $this->showerror(); } }else{ return $this->showerror(); } }}
uploadfile(),json_unescaped_unicode);
以上就介绍了android客户端使用okhttp上传文件php服务器,包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息