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