您好,登錄后才能下訂單哦!
Android 通過webservice上傳多張圖片到指定服務器詳解
當你瀏覽這個的時候相信你對webservice的基本應用已經有一定的了解了,若是還沒有明白的小伙伴,可以看我前面寫的文章點擊打開鏈接,這幾天在開發一款app,需要上傳圖片到指定服務器吧,但是我剛開始以為在網上面應該有這樣的好文章的吧,結果我在網絡上找了好多代碼,在傳遞圖片的過程中,遇到各種bug,真是國人的東西就是喜歡復制別人的,自己不動手檢驗一下代碼的正確性,哎,我也是無語了,然后我決定花點時間來填補一下這個空缺,寫了這一片博文,讓小伙伴們不走彎路,,首先我修改的網上的錯誤代碼,Android端代碼如下:這個是在異步類的一個方法里面,doInBackground(String... params)
InputStream fis; try { fis = new FileInputStream(params[0]+params[1]);//params[0]為文件路徑,params[1]為文件名稱 ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int count =-1; String uploadBuffer = null ; try { while((count = fis.read(buffer))!=-1){ baos.write(buffer, 0, count); uploadBuffer=Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT); //進行Base64編碼Base64.DEFAULT這個不能換成count } SoapObject soapObject=webServiceBase.getBaseSimpleData(params[1],uploadBuffer,"getImageFromAndroid",AgbcApi.TASKSERVICEURL); reque=soapObject.getProperty(0).toString(); } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e1) { e1.printStackTrace(); }
服務端代碼
public String getImageFromAndroid(String filename, String image){ OutputStream fos = null; try{ Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-MM-dd"); String time=format.format(date); String toDir = "d:\\Program Files\\images\\"+time+"\\"; //存儲路徑 byte[] buffer = new BASE64Decoder().decodeBuffer(image); //對android傳過來的圖片字符串進行解碼 File destDir = new File(toDir); if(!destDir.exists()) destDir.mkdir(); fos = new FileOutputStream(new File(toDir,filename)); //保存圖片 fos.write(buffer); fos.flush(); fos.close(); return "上傳圖片成功!" + "圖片路徑為:" + toDir; }catch (Exception e){ e.printStackTrace(); } return "上傳圖片失敗!";
這樣只要調用服務端方法就可以上傳圖片了
然而,你認為到這就完了嗎???沒有沒有啦!這只能是一張一張圖片的上傳,可是有時候我們需要批量的圖片上傳,怎么辦呢?既然一張圖片都搞定了,何況多上圖片,用一個循環不就實現了,然而的然而,都怪我們年少輕狂呀,事情往往不是這個簡單的,請看這篇文章:https://www.jb51.net/article/106650.htm
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。