如何将文件从Android上传到JavaWeb服务?
我试图通过RESTAPI将一个文件从android发送到我的Web服务器,但我不知道如何处理java中的MultipartBody.Part对象 API请求:如何将文件从Android上传到JavaWeb服务?,java,android,file-upload,Java,Android,File Upload,我试图通过RESTAPI将一个文件从android发送到我的Web服务器,但我不知道如何处理java中的MultipartBody.Part对象 API请求: @Multipart @POST("utilizadores/upload") Call<ResponseBody> uploadPhoto( @Part MultipartBody.Part fotografia); File file = new File(getPat
@Multipart
@POST("utilizadores/upload")
Call<ResponseBody> uploadPhoto(
@Part MultipartBody.Part fotografia);
File file = new File(getPath(data));
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part parts = MultipartBody.Part.createFormData("images", file.getName(), requestBody);
Call<ResponseBody> call = RetrofitClient
.getInstance()
.getApi()
.uploadPhoto(parts);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
Toast.makeText(getContext(), response.message(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
}
});
我认为您必须检查此解决方案此解决方案对我没有帮助,因为我的问题是REST服务器函数的参数。我认为您必须传递静态映像名称,以便系统无法理解您的名称。他们需要acthule文件,因此请正确检查您的代码
@Produces(MediaType.APPLICATION_JSON)
public Response uploadFile(@QueryParam("fotografia") String fotografia) {
BD bd = new BD();
int id = 54;
try {
String path = "/fotografias/" + id + ".jpg";
//guardarFicheiro(fotografia, path);
ConnectionBD connection = bd.abrirLigacao();
PreparedStatement ps = connection.getConn()
.prepareStatement("UPDATE utilizador SET fotografia=? WHERE id=?");
ps.setString(1, fotografia);
ps.setInt(2, id);
int x = ps.executeUpdate();
if (x > 0) {
bd.fecharConexao(connection);
return Response.ok().build();
}
bd.fecharConexao(connection);
} catch (SQLException ex) {
System.out.println(ex);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}