Skip to main content
 首页 » 编程设计

android之如何在 django 中从 android 接收图像文件

2025年05月04日48me-sa

我无法在 Django 中接收和保存从 Android 发送的文件。

正在使用改造和以下代码发送文件:

@Multipart 
@PUT("/users/{id}") 
   void modifyPic( 
   @Header("auth_token") String token, 
   @Path("id") int userid, 
   @Part("request[data][param][title]") String title, 
   @Part("request[data][param][Photo]") TypedFile avatar, 
   Callback<User> cb 
); 

但是我不知道如何在 django 中接收和保存文件。

有人可以帮我指点一下如何实现吗?

请您参考如下方法:

Retrofit 在处理文件方面几乎没有问题,所以我真的建议您将您的库从 beta1 升级到 beta2,这样效果会更好。

在 beta2 中你让你的 api 看起来像这样 -

public interface ApiInterface { 
        @Multipart 
        @POST ("/api/Accounts/editaccount") 
        Call<User> editUser (@Header("Authorization") String authorization, @Part("file\"; filename=\"pp.png\" ") RequestBody file , @Part("FirstName") RequestBody fname); 
    } 

'RequestBody file'部分的'file'是您服务器端需要访问的文件实体名称。

这就是您调用此请求的方式 -

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()); 
        Call<User> call = client.editUser(getToken(), fbody, name, id); 
        call.enqueue(new Callback<User>() { 
            @Override 
            public void onResponse(retrofit.Response<User> response, Retrofit retrofit) { 
            } 
 
            @Override 
            public void onFailure(Throwable t) { 
            } 
        }); 

这是 ayon115 在此链接上的改造库讨论中编写的代码副本 - https://github.com/square/retrofit/issues/1063

我使用了相同的概念,它对我来说很顺利。

我真的建议您转到该链接并阅读有关库的讨论以及 beta1 和 beta2 之间的区别。

如果您在测试服务器/客户端时遇到问题。

你可以去 www.requestb.in 并部署一个测试服务器,这样你就可以测试来自客户端的 http 请求,这样你就不需要每次都运行你的服务器:)

要测试您的客户端,您可以使用 POSTMAN 工具向您的服务器发出请求。

希望这对您有所帮助。