从Android应用程序保存Django中的图像

时间:2017-01-04 08:47:58

标签: android django django-models okhttp imagefield

从Android应用程序中保存Django中的图片时出现问题。我搜索并最终解决了这个问题。我正在分享这一点,以便它可能有所帮助。请参阅下面的答案。

1 个答案:

答案 0 :(得分:2)

您必须根据自己的规格实施。我只是向您展示一个通用的例子

我在我的Android应用中使用okHttp在网络上发送数据(包括图片)

Android AsyncTask代码(doInBackground方法)

  RequestBody formBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("filename","filename",RequestBody.create(MediaType.parse("multipart/form-data"), new File(file.getPath())))
                    //.addFormDataPart("other_field", "other_field_value")
                    .build();
            Request request = new Request.Builder()
                    .header("Authorization", "Token " + myToken)
                    .url(myUrl).post(formBody).build();
            Response response = new OkHttpClient().newCall(request).execute();
            return response.body().string();

我的view.py代码

def rechargeapplication(request):
    user=#get your own object
    uploadpic = request.FILES['filename']
    user.picture.save("image.jpg",uploadpic)
    user.save()
    return JsonResponse({'result':'Success'})

我是如何在models.py

中创建imageField的
picture=models.ImageField(upload_to="photos" , null=True, blank=True)

如果您使用的是ImageField,那么您必须安装" Pillow" 还要确保指定MEDIA_ROOT& settings.py中的MEDIA_URL ....我告诉你我是怎么做的

MEDIA_ROOT=os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'

并在urls.py的末尾添加此内容(因为我处于调试模式,这就是为什么我的实现...)

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)