从 Android 应用在 Django 中保存图像

Save image in Django from Android app

我在 Django 中从 Android 应用保存图片时遇到问题。我搜索并最终解决了问题。我正在分享这个,这样它可能会有所帮助。请看下面的答案。

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

我在我的 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" 还要确保在 settings.py 中指定 MEDIA_ROOT & 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)