ios - 使用多部分和不记名 token 上传图像

标签 ios swift file-upload alamofire multipart

我尝试在服务器中上传图片。它正在 postman 中工作。但是从我的代码来看,它总是显示身份验证失败。

func uploadPhoto( image: UIImage, completion: @escaping (JSON) -> ()) {


        let url = "\(AppConstant.imageUpload)"


//        let headers: HTTPHeaders
//        headers = [
//            "Authorization": "Bearer \(AppConstant.token))"
//            ]


           let headers: HTTPHeaders = [
                "Content-type": "multipart/form-data",
                "Content-Disposition" : "form-data",
                "Authorization": "Bearer \(AppConstant.token))"
           ]


//       let headers: HTTPHeaders = [
//                      "Content-type": "multipart/form-data",
//                      "Content-Disposition" : "form-data",
//                      "Authorization": "Bearer \(AppConstant.token))"
//                 ]
//

//
//     let headers: HTTPHeaders = [
//                   "Content-Type": "application/json",
//                   "Content-Disposition" : "form-data",
//                   "Authorization": "Bearer \(AppConstant.token))"
//               ]


//        let headers: HTTPHeaders = [
//                   "Content-type": "application/form-data",
//                   "Authorization": "Bearer \(AppConstant.token))"
//               ]
//        let headers: HTTPHeaders = [
//                          "Content-Type": "application/json",
//                         "Authorization": "Bearer \(AppConstant.token))"
//                     ]
//
        print("token  \(AppConstant.token)    url:  \(url)")


       // let httpHeaders = HTTPHeaders(headers)
        AF.upload(multipartFormData: { multiPart in

           multiPart.append(image.jpegData(compressionQuality: 0.4)!, withName: "image", fileName: "file.jpg", mimeType: "image/jpg")
        }, to: url, method: .post, headers: headers) .uploadProgress(queue: .main, closure: { progress in
            print("Upload Progress: \(progress.fractionCompleted)")
        }).responseString(completionHandler: { data in
            print("upload finished: \(data.data)")
        }).response { (response) in
            print("upload responce:  \(response.data)")

            switch response.result {
            case .success(let resut):

                DispatchQueue.main.async {
                                 do{


                                 //   self.imageUrl = try JSONDecoder().decode(ImageUploadUrl.self, from: resut!)

                                    if let data = resut,
                                           let urlContent = NSString(data: data, encoding: String.Encoding.ascii.rawValue) {
                                           print("urlContent  \(urlContent)")
                                       } else {
                                           print("Error: ")
                                       }
                                    print("upload 10 \(self.imageUrl?.url)")


                                               }catch {
                                    print("error occur ")
                                 }
                             }
                print("upload success result: \(resut)")
            case .failure(let err):
                print("upload err: \(err)")
            }
        }
    }

enter image description here

最佳答案

我发现您在标题中输入错误: 你写了你的标题如下:

let headers: HTTPHeaders = [
       "Content-type": "multipart/form-data",
       "Content-Disposition" : "form-data",
       "Authorization": "Bearer \(AppConstant.token))"
     ]

但是你必须去掉token最后的括号,所以你的代码应该是这样的

let headers: HTTPHeaders = [
       "Content-type": "multipart/form-data",
       "Content-Disposition" : "form-data",
       "Authorization": "Bearer \(AppConstant.token)"
     ]

希望能帮上忙

关于ios - 使用多部分和不记名 token 上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62250356/

相关文章:

iphone - 缓存的 UITableView 元素

ios - CUICatalog : Invalid asset name supplied: , 或无效比例因子 : 2. 000000

php - 正确的 PHP 代码? - 插入到 MySQL

iOS - 如何以编程方式向 UITableView 添加两行开关?

ios - DispatchTime.asyncafter 的一致性

ios - OpenWeatherMap 中不同大小的天气图标

ios - UIButton 宽度的自动布局问题

jsf - 如何在JSF中保存上传的文件

android - 使用改造在服务器上上传文件

带图像上传的 C# 多部分表单帖子