我正在尝试将通过设备相机拍摄的图像/视频上传到特定文件夹下的服务器,以便以后在仪表板中检索。
我已经阅读了许多文章和教程,基本上所有的文章和教程都使用JSP选择一个文件然后上传,或者他们使用PHP作为服务器端代码来上传它。
我的整个后端都是在JAVA SERVLET中开发的,我需要包括此上传/下载功能。
基本上我想要的是使用Retrofit或Volley发出POST请求以发出服务器请求,并且应该上传文件。 (就像当我们使用POSTMAN触发api调用并选择图像作为要上传的二进制文件时一样。)
我尝试过的链接:
Link 1,Link 2,Link 3等。它们都包括JSP或一些文件选择文件,我需要将媒体(图像/视频)作为参数传递给POST请求。
答案 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屏幕截图。