Can';t通过Trello API从iOS上传图像作为附件

Can';t通过Trello API从iOS上传图像作为附件,ios,image,mime-types,nsdata,trello,Ios,Image,Mime Types,Nsdata,Trello,我正在尝试使用API将图像从iOS应用程序上载到Trello: let imageDataToSend = UIImageJPEGRepresentation(imageToSend, 0.9) let parameters: [String: AnyObject] = [ "file": imageData, "mimeType" : "image/jpeg", "token" : "mytoken",

我正在尝试使用API将图像从iOS应用程序上载到Trello:

      let imageDataToSend = UIImageJPEGRepresentation(imageToSend, 0.9)

      let parameters: [String: AnyObject] = [
        "file": imageData,
        "mimeType" : "image/jpeg",
        "token" : "mytoken",
        "key" : "mykey",
        "name" : "attachment"

    ]

    oauthswift.client.post("https://trello.com/1/cards/\(card)/attachments", parameters: parameters,
                           success: {
                            data, response in
                            print("attach worked \(self.nsdataToJSON(data))")


        }, failure: { (error) in
            print("post failed\(error)")
    })
附件始终以文本文件的形式提供。我尝试了64位编码,UIImagePNGRE演示。我试过设置不同的mimetype

我不明白为什么mimeType总是返回空值。以下是我得到的数据:

Optional({
bytes = 20681;
date = "2016-05-09T03:33:44.151Z";
edgeColor = "<null>";
id = 57300518f5160afdb6ae5670;
idMember = 54ef9a89772213529008b0a9;
isUpload = 1;
mimeType = "<null>";
name = attachment;
previews =     (
);
url = "https://trello-attachments.s3.amazonaws.com/56b8cf1bca0ff64f7f1ba86a/57300517b871603e15aeb9b5/b8b906a4c952ec3b8d889fcfa37dddfb/Upload";
})
可选({
字节=20681;
日期=“2016-05-09T03:33:44.151Z”;
edgeColor=“”;
id=57300518f5160afdb6ae5670;
idMember=54ef9a89772213529008b0a9;
isUpload=1;
mimeType=“”;
姓名=附件;
预览=(
);
url=”https://trello-attachments.s3.amazonaws.com/56b8cf1bca0ff64f7f1ba86a/57300517b871603e15aeb9b5/b8b906a4c952ec3b8d889fcfa37dddfb/Upload";
})

下面是相关的API:

当提交这样的参数时,应该转义百分比值。例如,您可以将字符集定义为仅为“未保留”字符(由RFC 3986定义),即字母数字字符加-、、、和~: 向swift文件添加扩展名,如下所示:

extension NSCharacterSet {
    class func URLParameterValueCharacterSet() -> NSCharacterSet {
        let characterSet = NSMutableCharacterSet.alphanumericCharacterSet()
        characterSet.addCharactersInString("-._~")

        return characterSet
    }
}
  var imageData = UIImageJPEGRepresentation(selectedImg, 0.2)
  let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
  let imgStringToPost = percentEscapeString(base64String)
  let parameters: [String: AnyObject] = [
        "file": imgStringToPost,
        "mimeType" : "image/jpeg",
        "token" : "mytoken",
        "key" : "mykey",
        "name" : "attachment"

    ]
然后,您可以执行以下操作:

func percentEscapeString(string: String) -> String {
        return string.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLParameterValueCharacterSet())!
    }
现在像这样发布您的图像:

extension NSCharacterSet {
    class func URLParameterValueCharacterSet() -> NSCharacterSet {
        let characterSet = NSMutableCharacterSet.alphanumericCharacterSet()
        characterSet.addCharactersInString("-._~")

        return characterSet
    }
}
  var imageData = UIImageJPEGRepresentation(selectedImg, 0.2)
  let base64String = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
  let imgStringToPost = percentEscapeString(base64String)
  let parameters: [String: AnyObject] = [
        "file": imgStringToPost,
        "mimeType" : "image/jpeg",
        "token" : "mytoken",
        "key" : "mykey",
        "name" : "attachment"

    ]

我用另一个库解决了这个问题——阿拉莫菲尔和特雷罗似乎在一起玩得很好。如果有人遇到类似的问题,方法如下:

    Alamofire.upload(.POST, URL, multipartFormData: {
        multipartFormData in

            if let imageData = UIImageJPEGRepresentation(image, 0.5) {
                multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png", mimeType: "image/png")
            }

        for (key, value) in parameters {
            multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
        }

        }, encodingCompletion: {
            encodingResult in

            switch encodingResult {
            case .Success(let upload, _, _):
                print("it worked")
            case .Failure(let encodingError):
                print(encodingError)
            }
    })

您是否尝试过
let base64String=imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
this???是的-这不起作用-感谢您的想法-不幸的是,这仍然在trello端被解释为文本。(已尝试传递imagedata、base64string和imgstringtopost)。