博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用Volley将图像上传到服务器
阅读量:2509 次
发布时间:2019-05-11

本文共 7057 字,大约阅读时间需要 23 分钟。

Here you will learn about android upload image to server using volley library.

在这里,您将了解有关使用凌空库将android上传图像到服务器的信息。

At server side I have used java web service and for sending image to server is used.

在服务器端,我使用了Java Web服务,并使用了将图像发送到服务器的方法。

How it works?

这个怎么运作?

  • The user chooses an image from gallery and click on upload button.

    用户从图库中选择图像,然后单击上载按钮。

  • The image is then converted into Base64 string format and sent to server using volley network library.

    然后将图像转换为Base64字符串格式,并使用凌空网络库将其发送到服务器。

  • Now at server side this Bas64 string is converted back into image and stored at some location.

    现在,在服务器端,此Bas64字符串将转换回映像并存储在某个位置。

Android使用Volley将图像上传到服务器 (Android Upload Image to Server Using Volley)

服务器代码 (Server Code)

Below is the code for server. It is a . If you don’t know how to make web service in java then read below tutorial.

下面是服务器的代码。 这是一个 。 如果您不知道如何使用Java进行Web服务,请阅读以下教程。

Also Read: 

另请阅读:

DemoService.java

DemoService.java

package example; import java.io.FileOutputStream;import javax.ws.rs.Consumes;import javax.ws.rs.FormParam;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType; import org.apache.commons.codec.binary.Base64; @Path("/DemoService")public class DemoService {	@POST	@Path("/upload")	@Consumes(MediaType.APPLICATION_FORM_URLENCODED)	@Produces(MediaType.TEXT_HTML)	public String uploadImage(@FormParam("image") String image) {		String result="false";				//decode Base64 String to image		try{			FileOutputStream fos = new FileOutputStream("H:/image.jpg"); //change the path where you want to save the image			byte byteArray[] = Base64.decodeBase64(image);			fos.write(byteArray);			 			result="true";			fos.close();				}		catch(Exception e){			e.printStackTrace();		}				return result;	}}

Android专案 (Android Project)

1. Now create a new android project with package name com.androiduploadimage

1.现在,使用包名称com.androiduploadimage创建一个新的android项目。

2. Add dependency for volley library by adding following line in build.gradle file.

2.通过在build.gradle文件中添加以下行来添加凌空库的依赖关系。

compile 'com.android.volley:volley:1.0.0'

3. Add internet access permission in AndroidManifest.xml file.

3.在AndroidManifest.xml文件中添加Internet访问权限。

4. Add following code in respective files.

4.在相应文件中添加以下代码。

activity_main.xml

activity_main.xml

     
     
     
 

MainActivity.java

MainActivity.java

package com.androiduploadimage; import android.app.ProgressDialog;import android.content.Intent;import android.graphics.Bitmap;import android.net.Uri;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Base64;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast; import com.android.volley.AuthFailureError;import com.android.volley.Request;import com.android.volley.RequestQueue;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley; import java.io.ByteArrayOutputStream;import java.util.HashMap;import java.util.Map; public class MainActivity extends AppCompatActivity {    ImageView image;    Button choose, upload;    int PICK_IMAGE_REQUEST = 111;    String URL ="http://192.168.1.101/JavaRESTfullWS/DemoService/upload";    Bitmap bitmap;    ProgressDialog progressDialog;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         image = (ImageView)findViewById(R.id.image);        choose = (Button)findViewById(R.id.choose);        upload = (Button)findViewById(R.id.upload);         //opening image chooser option        choose.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.setType("image/*");                intent.setAction(Intent.ACTION_PICK);                startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE_REQUEST);            }        });         upload.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                progressDialog = new ProgressDialog(MainActivity.this);                progressDialog.setMessage("Uploading, please wait...");                progressDialog.show();                 //converting image to base64 string                ByteArrayOutputStream baos = new ByteArrayOutputStream();                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);                byte[] imageBytes = baos.toByteArray();                final String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT);                 //sending image to server                StringRequest request = new StringRequest(Request.Method.POST, URL, new Response.Listener
(){                    @Override                    public void onResponse(String s) {                        progressDialog.dismiss();                        if(s.equals("true")){                            Toast.makeText(MainActivity.this, "Uploaded Successful", Toast.LENGTH_LONG).show();                        }                        else{                            Toast.makeText(MainActivity.this, "Some error occurred!", Toast.LENGTH_LONG).show();                        }                    }                },new Response.ErrorListener(){                    @Override                    public void onErrorResponse(VolleyError volleyError) {                        Toast.makeText(MainActivity.this, "Some error occurred -> "+volleyError, Toast.LENGTH_LONG).show();;                    }                }) {                    //adding parameters to send                    @Override                    protected Map
getParams() throws AuthFailureError {                        Map
parameters = new HashMap
();                        parameters.put("image", imageString);                        return parameters;                    }                };                 RequestQueue rQueue = Volley.newRequestQueue(MainActivity.this);                rQueue.add(request);            }        });    }     @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);         if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {            Uri filePath = data.getData();             try {                //getting image from gallery                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);                 //Setting image to ImageView                image.setImageBitmap(bitmap);            } catch (Exception e) {                e.printStackTrace();            }        }    }}

Screenshot

屏幕截图

Android Upload Image to Server Using Volley

You can ask your queries in comment section.

您可以在评论部分提问。

翻译自:

转载地址:http://wgggb.baihongyu.com/

你可能感兴趣的文章
架构上面的东西,越少越好
查看>>
SlientEye
查看>>
Codeforces 420
查看>>
【转】配置子目录Web.config使其消除继承,用虚拟目录创建多个网站的方法
查看>>
vue可视化图表 基于Echarts封装好的v-charts简介
查看>>
第二阶段工作02
查看>>
原价和划线统一长度
查看>>
服务器包流程(不断跟新)
查看>>
客户端发包 GS端接收
查看>>
利用datapropertyname属性 把datagridview的列绑定到数据源的列
查看>>
Spring MVC过滤器-委派过滤器代理(DelegatingFilterProxy)
查看>>
AspNetCore taghelpers标签的使用
查看>>
带你学习AOP框架之Aspect.Core[1]
查看>>
Socket简单实现数据交互及上传
查看>>
用android studio编写2-4个数的简易四则运算
查看>>
VUE生命周期中的钩子函数及父子组件的执行顺序
查看>>
代理模式
查看>>
不能运行javac的问题
查看>>
chrome developer tool 调试技巧
查看>>
leetcode375 Guess Number Higher or Lower II
查看>>