ios Upload Image and Text using HTTP POST

后端 未结 10 2152
执笔经年
执笔经年 2020-11-22 08:27

Thanks for reading.

I am new to iOS and I am trying to upload an Image and a text using multi-part form encoding in iOS.

The curl

10条回答
  •  清歌不尽
    2020-11-22 08:56

    Here is a Swift version. Note that if you do not want to send form data it is still important to send the empty form boundary. Flask in particular expects form data followed by file data and will not populate request.files without the first boundary.

      let composedData = NSMutableData()
    
      // Set content type header
      let BoundaryConstant = "--------------------------3d74a90a3bfb8696"
      let contentType = "multipart/form-data; boundary=\(BoundaryConstant)"
      request.setValue(contentType, forHTTPHeaderField: "Content-Type")
    
      // Empty form boundary
      composedData.appendData("--\(BoundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
      // Build multipart form to send image
      composedData.appendData("--\(BoundaryConstant)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
      composedData.appendData("Content-Disposition: form-data; name=\"file\"; filename=\"image.jpg\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
      composedData.appendData("Content-Type: image/jpeg\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
      composedData.appendData(rawData!)
      composedData.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
      composedData.appendData("--\(BoundaryConstant)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
    
      request.HTTPBody = composedData
    
      // Get content length
      let length = "\(composedData.length)"
      request.setValue(length, forHTTPHeaderField: "Content-Length")
    

提交回复
热议问题