我正在尝试将点击后的图片从android上传到Django API,但是当我尝试使用日志记录拦截器进行调试时,收到了400错误请求。我已经浏览了所有类似的帖子,但没有帮助。
当我尝试从本地驱动器上载图像时,我的Django API正常工作,问题仅是当我尝试将图像从android发布到后端时。如果有人可以帮助我,那就太好了。
Django Views.py
from rest_framework.generics import (CreateAPIView)
from image_app.models import MyImage
from django.http import HttpResponse
from rest_framework.response import Response
from rest_framework import viewsets
class ImageCreateAPIView(CreateAPIView):
queryset = MyImage.objects.all()
serializer_class = imageSerializer
主要活动中的方法
public void uploadPicture(File imageFile, Uri uri ){
System.out.println("The imagefile is stored in "+imageFile);
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
clientBuilder.addInterceptor(loggingInterceptor);
/*Retrofit retrofit = new Retrofit.Builder()
.baseUrl(DjangoApi.DJANGO_SITE)
.client(clientBuilder.build())
.addConverterFactory(GsonConverterFactory.create())
.build();
*/
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(DjangoApi.DJANGO_SITE)
.client(clientBuilder.build())
.addConverterFactory(GsonConverterFactory.create())
.build();
Log.d("Django post API", retrofit+"");
DjangoApi postApi= retrofit.create(DjangoApi.class);
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), imageFile);
MultipartBody.Part multiPartBody = MultipartBody.Part
.createFormData("model_pic", imageFile.getName(), requestBody);
Call<RequestBody> call = postApi.uploadFile(multiPartBody);
call.enqueue(new Callback<RequestBody>() {
@Override
public void onResponse(Call<RequestBody> call, Response<RequestBody> response) {
Log.d("good", "good");
}
@Override
public void onFailure(Call<RequestBody> call, Throwable t) {
Log.d("fail", "fail");
}
});
}
Android端的Django API接口
public interface DjangoApi {
String DJANGO_SITE = "http://192.168.0.102:8000/image/";
@Multipart
@POST("upload/")
Call<RequestBody> uploadFile(@Part MultipartBody.Part file);
}
您的图片文件不是文件1_检查文件是否存在于Android存储设备中2_检查您在Android设备中的存储权限3_检查从存储加载图像的位置并粘贴到此处