使用Servlet和Android Studio将图像/视频上传到服务器

时间:2018-08-01 18:07:55

标签: android servlets

我正在尝试将通过设备相机拍摄的图像/视频上传到特定文件夹下的服务器,以便以后在仪表板中检索。

我已经阅读了许多文章和教程,基本上所有的文章和教程都使用JSP选择一个文件然后上传,或者他们使用PHP作为服务器端代码来上传它。

我的整个后端都是在JAVA SERVLET中开发的,我需要包括此上传/下载功能。

基本上我想要的是使用Retrofit或Volley发出POST请求以发出服务器请求,并且应该上传文件。 (就像当我们使用POSTMAN触发api调用并选择图像作为要上传的二进制文件时一样。)

我尝试过的链接:

Link 1Link 2Link 3等。它们都包括JSP或一些文件选择文件,我需要将媒体(图像/视频)作为参数传递给POST请求。

1 个答案:

答案 0 :(得分:0)

所以我终于设法实现了它。我必须发布图片/视频以及与该媒体相对应的JSON。

我的解决方法如下:

@WebServlet("/ImageUploadServlet")
@MultipartConfig
public class ImageUploadServlet extends HttpServlet {
..............
.............

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    long req_received_time=System.currentTimeMillis();
    String to_be_saved_location="";
    System.out.println("JSON received is : "+request.getParameter("input_json"));    
    JSONObject req = null;
    try {
        req = readPOST(request.getParameter("input_json"));
        to_be_saved_location = "your_location";
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        SqlUtil.incident_reporting(xxx);// function to enter data in sql
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    InputStream in = request.getPart("image").getInputStream();//change it to video(it's just a parameter name)
    OutputStream out = new FileOutputStream("/Users/driftking9987/Documents/Stuffs/"+to_be_saved_location+".jpg");//Add .mp4 for video
    //OutputStream out = new FileOutputStream("/var/www/html/media/abc.mp4");
    copy(in, out); //The function is below
    out.flush();
    out.close();

}

public static long copy(InputStream input, OutputStream output) throws IOException {
    byte[] buffer = new byte[4096];

    long count = 0L;
    int n = 0;

    while (-1 != (n = input.read(buffer))) {
        output.write(buffer, 0, n);
        count += n;
    }
    return count;
}

在将其保存在服务器上的同时,我授予了tomcat用户写入media文件夹的权限。

下面是POSTMAN屏幕截图。

enter image description here