当前位置: 首页 > 知识库问答 >
问题:

使用改装2发送图像

蒯安平
2023-03-14

我正在尝试使用Reform2将图像上载到服务器,但不确定如何执行。

文档让我有点困惑,我尝试了这里提到的解决方案,但它对我不起作用。

这是我当前使用的代码片段,它不会向服务器发送任何内容:

// Service
@Multipart
@POST("0.1/gallery/{galleryId}/addImage/")
Call<ResponseBody> addImage(@Path("galleryId") String galleryId, @Part MultipartBody.Part image);

//Call
MultipartBody.Part imagePart = MultipartBody.Part.createFormData("image", file.getName(), RequestBody.create(MediaType.parse("image/*"), file));
Call<ResponseBody> call = service. addImage("1234567890", imagePart);

然而,我可以通过使用TypedFile对1.9进行改装来很好地做到这一点。

是我做错了什么还是Retrofit2对这种事情有什么问题?

共有2个答案

程成天
2023-03-14

您好,请检查我们如何在改装2中发送图像。以部件的形式,您还需要发送图像和其他数据。

public interface ApiInterface {
    @Multipart
    @POST("0.1/gallery/{galleryId}/addImage/")
    Call<User> checkapi (@Part("file\"; filename=\"pp.png\" ") RequestBody file , @Part("FirstName") RequestBody fname, @Part("Id") RequestBody id);
}

File file = new File(imageUri.getPath());
RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), firstNameField.getText().toString());
RequestBody id = RequestBody.create(MediaType.parse("text/plain"), AZUtils.getUserId(this));
Call<User> call = client.editUser(AZUtils.getToken(this), fbody, name, id);
call.enqueue(new Callback<User>() {
    @Override
    public void onResponse(retrofit.Response<User> response, Retrofit retrofit) {
        AZUtils.printObject(response.body());
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
});

谢谢,希望这对你有帮助。

秦禄
2023-03-14

我已经为此奋斗了一段时间,我最终得到了这个解决方案,以使它能够工作。。。希望有帮助:

Map<String, RequestBody> map = new HashMap<>();
map.put("Id",Utils.toRequestBody("0"));
map.put("Name",Utils.toRequestBody("example"));
String types = path.substring((path.length() - 3), (path.length()));

File file = new File(pathOfYourFile);
RequestBody fileBody = RequestBody.create(MediaType.parse("image/jpg"), file);
map.put("file\"; filename=\"cobalt." + types + "\"", fileBody);

Call<ResponseBody> call = greenServices.upload(map);

green Services接口中:

@Multipart
@POST(Constants.URL_UPLOAD)
Observable<Response<ResponseBody>> uploadNew(@PartMap Map<String, RequestBody> params);
 类似资料:
  • 我想使用改造同时发送此Postdata和图像文件。 PostData和Point PostApiService 我从这些代码中获取图像uri,并将使用它。它用作returnUri。你可以考虑这个。 代码: 如果我在PostApiService上使用,错误是 如果我,错误是 那么,我该怎么办? 拜托,你能帮帮我吗?

  • 我正在测试一种使用改装库发送图像的方法。在此处的改装文件中:http://square.github.io/retrofit/有一种方法可以使用@MultiPart注释。我正在尝试像文档一样使用,但对我来说仍然不起作用。 我该怎么做? 我在努力。 Web服务php文件 Usario的侦听器 活动 例外 电子/错误:(5200):com。谷歌。格森。JsonSyntaxException:com。谷

  • 我无法在改型中以行json格式发送数据。 我将改装版1.9迁移到2。在Retrfit1.9中,我可以使用HashMap发送原始json,但在改型2中,我使用HashMap发送,但无法将数据作为json发送。所以我用pojo来代替。 api生成试图获取非对象属性的日志,因此我无法在json行中传递数据。 我刚刚在错误日志中看到了我的服务器详细信息,我的请求自动转换为GET。我在POST中使用Refo

  • 问题内容: 我想使用Http Post将图像从android客户端发送到Django服务器。该图像是从图库中选择的。目前,我正在使用列表值名称对来将必要的数据发送到服务器,并从JSON中接收来自Django的响应。是否可以对图像使用相同的方法(对于JSON响应中嵌入的图像使用URL)? 另外,哪种方法更好:远程访问图像而不从服务器下载图像或将其下载并存储在位图数组中并在本地使用?图像数量很少(<1

  • 在这里,我将字段数据与FormUrlEncoded一起使用,但我必须在相同的API部分(“user\u image”)RequestBody文件中与多部分一起使用这两种数据。这怎么可能?提前谢谢。

  • 我使用下面的代码来创建一个条目在strapi服务器,但不幸的是,我得到了"坏请求"错误。我想不出来。请指导我如何解决这个问题。 ApiSet。班 主要活动。班 我的身体。班 还有我的模型课 数据班 属性。班 最后,我得到了如下回应: 我只是想知道我在哪里犯了错误