《PHP教程:android上傳圖片到PHP的過程詳解》要點:
本文介紹了PHP教程:android上傳圖片到PHP的過程詳解,希望對您有用。如果有疑問,可以聯系我們。
本日在做上傳頭像的時候,總是提交連接超時錯誤,報錯信息如下:XXXXXXSokcetTimeOutXXXXXXXXPHP學習
然后本身設置HTTP的超時時間:
PHP學習
再building,runing,還是不行....這就怪了,明明好好的,怎么會突然就變成連接超時了呢!又折騰了一陣子后,也跟后臺那邊的朋友溝通過,他也測試了上傳接口,發現沒什么問題,就讓我本身去折騰去了....
我就郁悶了,看不出原先的代碼有什么錯誤,也沒什么法子了,就出最下下策吧,本身搭一個PHP上傳圖片接口,親自測試下到底是怎么回事....PHP學習
1.首先,你得下一個便利快捷的PHP服務器,我這里用了WampServer,百度----下載-----安裝-----啟動,瀏覽器輸入:http://127.0.0.1 有頁面顯示,OK了.就這么簡單!PHP學習
2.瀏覽器輸入 : http://本機IP地址??? 回車,?? 發現報錯,類似“You don't have permission to access / on this server”? 說明你的WM還沒設置,必要進行如下設置:
造成這個問題的原因是Apache 的http.conf內的默認配置是
PHP學習
同樣phpMyadmin在localhost下不能正常拜訪在127.0.0.1能正常拜訪,解決方法:
點擊根目錄下的alias目錄,打開phpmyadmin.conf配置文件,和上面修改http.conf一樣把
PHP學習
3. 再此輸入 : http://本機IP地址??? 回車??? 顯示頁面??? OK!?? 至于為什么要第二步、第三步呢,我就不說了...留給新人去想想吧! 大神直接無視.....
4.寫一個上傳圖片的PHP文件,當然我一個敲java的孩子一下子怎么可能憋的出來,那怎么辦,當然是百度參考別人的了,下面的PHP代碼源自網絡,親測沒有差錯:
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目錄下,我的如下圖所示,僅供參考:PHP學習
PHP學習
6.經過上面幾個步驟,PHP端已經搭建好了,現在便是回到android端改改IP地址測試下就oK了,代碼段如下:
PHP學習
[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部署的地址,改成你自己的就行了.PHP學習
PS:別犯2,用了127.0.0.1??? 想想為啥不克不及用127.0.0.1PHP學習
到此便是building,runing了.? 發現OK....?? 可以上傳,并在www目錄下找到upload目錄,upload目錄下有上傳的圖片....PHP學習
PHP學習
7.這就納悶了.... 我又興起勇氣找了PHP后端,跟他激烈的討論一番后,發現是服務器坑了爹啊!? 800塊一年的服務器.....唉...不說了....PHP學習
維易PHP培訓學院每天發布《PHP教程:android上傳圖片到PHP的過程詳解》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/8942.html