上传照片从swift到django api

时间:2015-01-22 15:48:40

标签: django swift image-uploading

我想将图片从iDevice上传到网络服务器。我使用Django API。 照片未上传,我的代码在哪里错了

感谢您的帮助

var data :NSData = UIImageJPEGRepresentation( image!, 100.0)
let boundary = "Boundary-\(NSUUID.alloc().UUIDString)"
    var session = NSURLSession.sharedSession()
    let url = NSURL(string: APIURLs.uploadWorkerImage.stringByAppendingString(workerId))
    let request = NSMutableURLRequest(URL: url!)
    request.HTTPMethod = "PATCH"
    request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

    let body = NSMutableData()


    let filename = "fileName.jpeg"
    let mimetype = "image/jpeg"

    body.appendData(NSString(string: "--\(boundary)\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(string: "Content-Disposition: form-data; name=\"photo\"; filename=\"\(filename)\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(NSString(string: "Content-Type: \(mimetype)\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    body.appendData(data)
    body.appendData(NSString(string: "\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)

    body.appendData(NSString(string: "--\(boundary)\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)

    request.HTTPBody = body

    let downloadTask = session?.downloadTaskWithRequest(request)
    downloadTask?.resume()

编辑

如果我使用此命令成功上传了照片

curl -H  -X PATCH --form "photo=@static/images/close.png" http://apiurl

2 个答案:

答案 0 :(得分:1)

您使用的是错误的类型。 NSURLSessionDownloadTask是下载的东西。您需要使用NSURLSessionUploadTask

答案 1 :(得分:1)

问题在于图像数据

var data :NSData =   NSData(contentsOfFile: path)!

而不是

var data :NSData = UIImageJPEGRepresentation( image!, 100.0)

我希望这可以帮助任何人