簡體   English   中英

如何使用Alamofire將具有某些鍵和值的UIImage上傳到服務器

[英]How to upload UIImage with some key and values to server with Alamofire

我正在使用alamofire將圖片以及一些參數上傳到服務器,但是我如何雄心勃勃地引用成員上傳錯誤。

可能是什么問題? 我的代碼是。

public var selectedImage: UIImage?
...
let parameters: Parameters = ["user_id":  "1","description": "test"];
    Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(selectedImage, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        } //Optional for extra parameters
    }, to:"mysite/upload.php")
        .uploadProgress { progress in // main queue by default
            print("Upload Progress: \(progress.fractionCompleted)")
        }
        .downloadProgress { progress in // main queue by default
            print("Download Progress: \(progress.fractionCompleted)")
        }
        .responseJSON { response in
            debugPrint(response)
    }

試試這個對我來說很好。

    let selectedImage: UIImage?

    let parameters: Parameters = ["user_id":  "1","description": "test"];

    Alamofire.upload(multipartFormData: { MultipartFormData in

        for (key, value) in parameters {
            MultipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
        }

        let imgData = UIImageJPEGRepresentation(selectedImage!,1)
        MultipartFormData.append(imgData!, withName: "fileset", fileName: "file.jpeg", mimeType: "image/jpeg")

    }, to: "mysite/upload.php") { (result) in
        switch result {
        case .success(let upload, _, _):

        upload.uploadProgress(closure: { (Progress) in
              print("Upload Progress: \(Progress.fractionCompleted)")
           })

            upload.responseJSON { response in
                print(response.result.value!)
            }

        case .failure(let encodingError):
            print(encodingError.localizedDescription)
            break
        }

    }

您正在上傳UIImage本身! 這是不正確的。

相反,您必須先將其轉換為數據,然后再上傳...

所以在這行代碼之前

multipartFormData.append(selectedImage, withName: "fileset",fileName: "file.jpg", mimeType: "image/jpg")

嘗試從所選圖像中獲取數據:

var imageData : Data?
    if let image = selectedImage{
        imageData = UIImageJPEGRepresentation(image , 0.7)!
    }

然后,您可以上傳它:

if let data = imageData{

            multipartFormData.append(data,"fileset",fileName: "file.jpg", mimeType: "image/jpg")
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM