我在泽西岛有一个功能性的网络服务,它使用视频和图像等多部分表单数据并将它们存储在目录中。我可以从浏览器上传视频和图像。现在我想通过选择图库Intent或相机从Android应用程序上传它们。 我该怎么办? 任何帮助将不胜感激。这是我的网络服务代码。
@Path("/fileupload")
public class UploadFileService {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
try {
String uploadedFileLocation = "/home/aamir/Downloads/" + fileDetail.getFileName();
// save it
saveToFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation;
return output;
}
catch(Exception e)
{
return "error";
}
}
// save uploaded file to new location
private void saveToFile(InputStream uploadedInputStream,
String uploadedFileLocation) {
try {
OutputStream out = null;
int read = 0;
byte[] bytes = new byte[1024];
out = new FileOutputStream(new File(uploadedFileLocation));
while ((read = uploadedInputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
我建议您使用Retrofit下载图像。它是处理RESTful应用程序的绝佳库:
答案 1 :(得分:0)
您可以在Android应用中使用Jersey客户端API(或任何其他客户端API,Apache CXF会让人想起......)。它位于一个独立的jar中,您可以将其作为依赖项添加到您的应用程序中,然后在您的应用程序中创建一个用于创建请求的共享客户端。
来自Jersey客户端文档...
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:9998").path("resource");
Form form = new Form();
form.param("x", "foo");
form.param("y", "bar");
MyJAXBBean bean =
target.request(MediaType.APPLICATION_JSON_TYPE)
.post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE),
MyJAXBBean.class);