你的观点应该能够收到FILES
与POST
请求和常规的事情来做,当你从常规的HTML形式上传图片。那么你所要做的就是在iOS中创建multipart表单并将其发布到接收方url。一旦你在表单中提交照片,你的django应用程序应该做S3的事情。因此,简单的问题是如何将选定的图像从iOS发布到Web服务表单作为多部分表单。这段代码证明了。
var imageData :NSData = UIImageJPEGRepresentation(imagenReduced, 1.0);
var request: NSMutableURLRequest?
let HTTPMethod: String = "POST"
var timeoutInterval: NSTimeInterval = 60
var HTTPShouldHandleCookies: Bool = false
request = NSMutableURLRequest(URL: url)
request!.HTTPMethod = HTTPMethod
request!.timeoutInterval = timeoutInterval
request!.HTTPShouldHandleCookies = HTTPShouldHandleCookies
let boundary = "----------SwIfTeRhTtPrEqUeStBoUnDaRy"
let contentType = "multipart/form-data; boundary=\(boundary)"
request!.setValue(contentType, forHTTPHeaderField:"Content-Type")
var body = NSMutableData();
let tempData = NSMutableData()
let fileName = filenames + ".jpg" //"prueba.jpg"
let parameterName = "userfile"
let mimeType = "application/octet-stream"
tempData.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
let fileNameContentDisposition = fileName != nil ? "filename=\"\(fileName)\"" : ""
let contentDisposition = "Content-Disposition: form-data; name=\"\(parameterName)\"; \(fileNameContentDisposition)\r\n"
tempData.appendData(contentDisposition.dataUsingEncoding(NSUTF8StringEncoding)!)
tempData.appendData("Content-Type: \(mimeType)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
tempData.appendData(imageData)
tempData.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(tempData)
body.appendData("\r\n--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
request!.setValue("\(body.length)", forHTTPHeaderField: "Content-Length")
request!.HTTPBody = body
var vl_error :NSErrorPointer = nil
var responseData = NSURLConnection.sendSynchronousRequest(request,returningResponse: nil, error:vl_error)
var results = NSString(data:responseData, encoding:NSUTF8StringEncoding)
println("finish \(results)")
首先您需要以某种方式连接swift文件系统,您的媒体根目录是swift吗?我需要更多的布局来帮助你。另外,如果你在一个与swift/django服务器的VPN,那么它可以很容易,或服务于媒体使用Nginx和SMB取决于许多因素 – Mikeec3
不知道什么媒体的根......是在iPhone上..我想使用NSURLConnection.sendAsynchronousRequest连接...我发现这在发送多部分形式的数据http://stackoverflow.com/questions/29045228/how-to-convert-video-file-to-multiform-data-in-swift但仍然不知道如何写这个 – Tyler
的后端代码那么你有没有使用django-rest-framework?你仍然需要一种方式让应用程序连接/验证与Django – Mikeec3