android上传图片到PHP后台全过程

android上传图片到PHP后台全过程

分类:androidPHP

PS:便宜的服务器可是会不定时的坑你一把。

今天在修改app的一些交互以及重构代码。一切都是那么顺利,啪啪啪,runing,测试没问题,再啪啪啪。。。

突然,测试上传头像的时候,老是连接超时。。。。报如下错误:

XXXXXXSokcetTimeOutXXXXXXXX

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

//设置超时时间 httpclient.setTimeout(20000);再building,runing,,还是不行。。。。这就怪了,明明好好的,怎么会突然就变成连接超时了呢!又折腾了一阵子后,也跟后台那边的朋友沟通过,他也测试了上传接口,发现没什么问题,就让我自己去折腾去了。。。。

我就郁闷了,看不出原先的代码有什么错误,也没什么法子了,就出最下下策吧,自己搭一个PHP上传图片接口,亲自测试下到底是怎么回事。。。。

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

2.浏览器输入 : 本机IP地址 回车, 发现报错,类似“You don’t have permission to access / on this server” 说明你的WM还没设置,需要进行如下设置:

造成这个问题的原因是Apache 的http.conf内的默认配置是# onlineoffline tag – don’t removeOrder Deny,AllowDeny from allAllow from 127.0.0.1只允许127.0.0.1访问,点击wampserver图标让后点击Putonline,http.conf内的以上默认配置自动修改为# onlineoffline tag – don’t removeOrder Allow,DenyAllow from all现在localhost可以访问了。同样phpMyadmin在localhost下不能正常访问在127.0.0.1能正常访问,解决方法:点击根目录下的alias目录,打开phpmyadmin.conf配置文件,和上面修改http.conf一样把Deny from allAllow from 127.0.0.1 修改为Allow from all

3. 再此输入 :本机IP地址 回车 显示页面 OK! 至于为什么要第二步、第三步呢,我就不说了。。。留给新人去想想吧! 大神直接无视。。。。。

4.写一个上传图片的PHP文件,当然我一个敲java的孩子一下子怎么可能憋的出来,那怎么办,当然是百度参考别人的了,下面的PHP代码源自网络,亲测没有错误:

<?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目录下,我的如下图所示,仅供参考:

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

//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="";</span>//LogUtil.e(TAG, "upload img url :"+url);AsyncHttpUtil.post_loading(context,url, params, new MyTextHttpResponseHandler() {@Overridepublic 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);}@Overridepublic 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=""; 这个192.168.0.8是我的PHP部署的地址,改成你自己的就行了。PS:别犯2,用了127.0.0.1 想想为啥不能用127.0.0.1到此就是building,runing了。 发现OK。。。。 可以上传,并在www目录下找到upload目录,upload目录下有上传的图片。。。。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

上一篇Multiple dex files define Lcom/ta/utdid2/android/utils/UTDID

顶1踩0

孜孜不倦的追求奋斗,加油。

android上传图片到PHP后台全过程

相关文章:

你感兴趣的文章:

标签云: