android上传图片到PHP的过程详解


Posted in PHP onAugust 03, 2015

今天在做上传头像的时候,总是提交连接超时错误,报错信息如下:XXXXXXSokcetTimeOutXXXXXXXX

然后自己设置HTTP的超时时间:

[java] view plaincopyprint?

//设置超时时间  

httpclient.setTimeout(20000); 

再building,runing,还是不行。。。。这就怪了,明明好好的,怎么会突然就变成连接超时了呢!又折腾了一阵子后,也跟后台那边的朋友沟通过,他也测试了上传接口,发现没什么问题,就让我自己去折腾去了。。。。
我就郁闷了,看不出原先的代码有什么错误,也没什么法子了,就出最下下策吧,自己搭一个PHP上传图片接口,亲自测试下到底是怎么回事。。。。

1.首先,你得下一个方便快捷的PHP服务器,我这里用了WampServer,百度----下载-----安装-----启动,浏览器输入:http://127.0.0.1 有页面显示,OK了。就这么简单!

2.浏览器输入 : http://本机IP地址    回车,   发现报错,类似“You don't have permission to access / on this server”  说明你的WM还没设置,需要进行如下设置:
造成这个问题的原因是Apache 的http.conf内的默认配置是

# onlineoffline tag - don't remove

Order Deny,Allow

Deny from all

Allow from 127.0.0.1

只允许127.0.0.1访问,点击wampserver图标让后点击Putonline,http.conf内的以上默认配置自动修改为
# onlineoffline tag - don't remove

Order Allow,Deny

Allow from all

现在localhost可以访问了。

同样phpMyadmin在localhost下不能正常访问在127.0.0.1能正常访问,解决方法:
点击根目录下的alias目录,打开phpmyadmin.conf配置文件,和上面修改http.conf一样把

Deny from all

Allow from 127.0.0.1 

修改为

Allow from all

3. 再此输入 : http://本机IP地址    回车    显示页面    OK!   至于为什么要第二步、第三步呢,我就不说了。。。留给新人去想想吧! 大神直接无视。。。。。
4.写一个上传图片的PHP文件,当然我一个敲java的孩子一下子怎么可能憋的出来,那怎么办,当然是百度参考别人的了,下面的PHP代码源自网络,亲测没有错误:

[php] view plaincopyprint?
<?php 
$base_path = "./upload/"; //存放目录 
if(!is_dir($base_path)){ 
  mkdir($base_path,0777,true); 
} 
$target_path = $base_path . basename ( $_FILES ['attach'] ['name'] ); 
if (move_uploaded_file ( $_FILES ['attach'] ['tmp_name'], $target_path )) { 
  $array = array ( 
      "status" => true, 
      "msg" => $_FILES ['attach'] ['name']  
  ); 
  echo json_encode ( $array ); 
} else { 
  $array = array ( 
      "status" => false, 
      "msg" => "There was an error uploading the file, please try again!" . $_FILES ['attach'] ['error']  
  ); 
  echo json_encode ( $array ); 
} 
?>

5.将上面的php文件放在WM安装目录下的www目录下,我的如下图所示,仅供参考:

android上传图片到PHP的过程详解

6.经过上面几个步骤,PHP端已经搭建好了,现在就是回到android端改改IP地址测试下就oK了,代码段如下:

[java] view plaincopyprint?
   //HTTP上传图片 
RequestParams params = new RequestParams(); 
try { 
  //将压缩后的bitmap保存为图片文件 
  String saveImgPath=getSD_Path()+"/saveimg.png"; 
  File saveimg=new File(saveImgPath); 
  FileOutputStream fos = new FileOutputStream(saveimg); 
  bmp.compress(Bitmap.CompressFormat.PNG, 100, fos); 
  fos.flush(); 
  fos.close(); 
  //上传压缩后的文件,大约100k左右 
  File uploadImg=new File(saveImgPath); 
  <span style="color:#ff0000;">params.put("attach", uploadImg);</span> 
} catch (FileNotFoundException e) { 
  e.printStackTrace(); 
} catch (IOException e) { 
  e.printStackTrace(); 
} 
//上传地址 
    String url=URLConfigs.UploadHeadImage_ukey+myprefs.Ukey().get(); 
<span style="color:#ff0000;">String url="http://192.168.0.8/upload.php";</span> 
    LogUtil.e(TAG, "upload img url :"+url); 
AsyncHttpUtil.post_loading(context,url, params, new MyTextHttpResponseHandler() { 
  @Override 
  public void onSuccess(int status, Header[] arg1, String json) { 
    super.onSuccess(status, arg1, json); 
    LogUtil.e(TAG, "上传图片 json :"+json); 
    RespondBaseEntity entity=GsonUtil.GetFromJson(json, RespondBaseEntity.class); 
    if(entity.isStatus()){ 
      //上传成功,设置图片 
      face.setImageBitmap(bmp); 
      ToastUtils.show(context, "上传成功"); 
    }else{ 
      ToastUtils.show(context, json); 
    } 
     
    myprefs.position().put(0); 
  } 
   
  @Override 
  public void onFailure(int arg0, Header[] arg1, String arg2, Throwable arg3) { 
    super.onFailure(arg0, arg1, arg2, arg3); 
    myprefs.position().put(0); 
        arg3.printStackTrace(); 
    ToastUtils.show(context, R.string.network_unavailable); 
  }

params.put("attach", uploadImg);  这里的attach参数是和服务端一一对应的,别乱改。。。。
String url="http://192.168.0.8/upload.php";   这个192.168.0.8是我的PHP部署的地址,改成你自己的就行了。

PS:别犯2,用了127.0.0.1    想想为啥不能用127.0.0.1

到此就是building,runing了。  发现OK。。。。   可以上传,并在www目录下找到upload目录,upload目录下有上传的图片。。。。

android上传图片到PHP的过程详解

7.这就纳闷了。。。。 我又鼓起勇气找了PHP后端,跟他激烈的讨论一番后,发现是服务器坑了爹啊!  800块一年的服务器。。。。。唉。。。不说了。。。。

PHP 相关文章推荐
PHP中一个控制字符串输出的函数
Oct 09 PHP
让PHP显示Facebook的粉丝数量方法
Jan 08 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
在WordPress中使用wp-cron插件来设置定时任务
Dec 10 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
CI框架无限级分类+递归的实现代码
Nov 01 PHP
PHP面向对象程序设计之对象生成方法详解
Dec 02 PHP
PHP实现按之字形顺序打印二叉树的方法
Jan 16 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 #PHP
php基于session实现数据库交互的类实例
Aug 03 #PHP
php通过排列组合实现1到9数字相加都等于20的方法
Aug 03 #PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 #PHP
UTF-8正则表达式如何匹配汉字
Aug 03 #PHP
PHP使用缓存即时输出内容(output buffering)的方法
Aug 03 #PHP
php中ob函数缓冲机制深入理解
Aug 03 #PHP
You might like
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
2019/11/13 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
详解Python的单元测试
2015/04/28 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
对pandas中Series的map函数详解
2018/07/25 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python循环实现n的全排列功能
2019/09/16 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
C#笔试题和英文面试题
2013/02/07 面试题
员工晚婚的请假条
2014/02/08 职场文书
白酒市场营销方案
2014/02/25 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
保研推荐信
2014/05/09 职场文书
服务标语口号
2014/07/01 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
教师“一帮一”结对子活动总结
2015/05/07 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python