Android Studio圖片上傳


參考來源:https://blog.51cto.com/zhaojie/1209816

使用XUI框架:https://github.com/xuexiangjys/XUI

xml文件:增加確認按鈕,點擊后圖片開始上傳。

<com.xuexiang.xui.widget.alpha.XUIAlphaButton
        android:id="@+id/button_info"
        style="@style/Button.Primary.wrap"
        android:layout_marginTop="10dip"
        android:text="@string/pick_up" />

 

 XUI中已經封裝好,可以獲得圖片的地址,在ImageSelectGridAdapter.java文件定義方法,用數組接圖片的地址。

 

 在PictureSelectorFragment.java文件中監聽按鈕

    //region 圖片上傳
    @OnClick({R.id.button_info})
    public void upLoad(View v)
    {
        ImageSelectGridAdapter a2=(ImageSelectGridAdapter)recyclerView.getAdapter();
        List<LocalMedia> mList =a2.getItemList();

        for(int i=0;i<mList.size();i++)
        {
            try {
                LocalMedia jo=mList.get(i);
                String srcUrl=jo.getCompressPath();
                String fileName=srcUrl.substring(srcUrl.lastIndexOf("/")+1);
                FileInputStream fis = new FileInputStream(srcUrl);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int count = 0;
                while((count = fis.read(buffer)) >= 0){
                    baos.write(buffer, 0, count);
                }
                String uploadBuffer = new String(Base64.encode(baos.toByteArray()));  //進行Base64編碼
                fis.close();
                Thread thread_picture=new Thread(new Runnable() {
                    @Override
                    public void run() {
                        res1l = connectWebService(fileName, uploadBuffer);//接收service返回值
                    }
                });
                thread_picture.start();
                thread_picture.join();
                if(res1l.equals("ok"))
                {
                    ActivityUtils.startActivity(MainActivity.class);
                }else {
                    throw new Exception();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }


    private String connectWebService( String fileName, String p_w_picpathBuffer) {
        String SOAP_ACTION="http://tempuri.org/uploadImage";
        String NAMESPACE="http://tempuri.org/";//命名空間
        String METHOD_NAME = "uploadImage";
        String URL="http://192.168.2.120:80/WebService/Upload.asmx";//具體路徑
        // 第1步:創建SoapObject對象,並指定WebService的命名空間和調用的方法名
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        // 第2步:設置WebService方法的參數
        request.addProperty("filename", fileName);  //參數1   圖片名
        request.addProperty("p_w_picpath", p_w_picpathBuffer);   //參數2  圖片字符串
        // 第3步:創建SoapSerializationEnvelope對象,並指定WebService的版本
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
        // 設置bodyOut屬性
        envelope.bodyOut = request;
        // 設置是否調用的是dotNet開發的WebService
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        try {
            // 第4步:創建HttpTransportSE對象,並指定URL
            HttpTransportSE transportSE=new HttpTransportSE(URL);
            // 第5步:調用WebService
            transportSE.call(SOAP_ACTION,envelope);
            //Object result = envelope.getResponse();
            //return result.toString();
            SoapObject  result=(SoapObject )envelope.bodyIn; //獲取到返回的結果,並強制轉換成SoapObject對象
            String test=result.getProperty(0).toString();//該對象中還嵌套了一個SoapObject對象,需要使用getProperty(0)把這個對象提取出來
            return test;
        }catch (Exception e){
            e.printStackTrace();
            Log.e("", Log.getStackTraceString(e));
            return Log.getStackTraceString(e);
        }
    }

    //endregion

WebService:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM