roc*_*oon 1 django ios swift alamofire
我似乎无法将照片正确上传到Django.这是问题所在.
request.FILES是空的.然而,在身体中我看到一堆乱码(这将是照片数据).我试过这个让它工作但它仍然显示为空:
在Django:
class UploadPhoto(APIView):
parser_classes = (MultiPartParser, FormParser, )
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
def post(self, request, format=None):
print(request.FILES)
return Response(status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)
在iOS中:
func photoUploader(photo: UIImage, completion: @escaping (Bool) -> Void) {
let imageData = UIImageJPEGRepresentation(photo, 0.8)
guard let authToken = Locksmith.loadDataForUserAccount(userAccount: "userToken")?["token"] as? String else {
return
}
let headers: HTTPHeaders = ["Authorization": authToken]
var url: URLRequest?
do {
url = try URLRequest(url: EntityURLs.uploadPhotoURL, method: .post, headers: headers)
} catch {
print("Error")
}
if let url = url {
upload(multipartFormData: { (mpd) in
mpd.append(imageData!, withName: "file", mimeType: "image/jpeg")
}, with: url, encodingCompletion: { (success) in
debugPrint(success)
})
}
}
Run Code Online (Sandbox Code Playgroud)
好的,为了使用Alamofire 4.0框架将文件正确上传到Django,有一件事我忘了添加:文件名.
在我的情况下,我正在上传"weeknd.jpg"所以我必须改变这个:
mpd.append(imageData!, withName: "file", mimeType: "image/jpeg")
Run Code Online (Sandbox Code Playgroud)
对此:
mpd.append(imageData, withName: "file", fileName: "weeknd.jpg", mimeType: "image/jpeg")
Run Code Online (Sandbox Code Playgroud)
在Django中,request.FILES现在显示如下:<MultiValueDict: {'file': [<InMemoryUploadedFile: weeknd.jpg (image/jpeg)>]}>
我几乎忘了添加fileName.希望这会对某人有所帮助.
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |