作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 django 后端将照片和视频从 swift iOS 应用程序上传到亚马逊 s3。我找到了一个 django 应用程序,使用 https://github.com/bradleyg/django-s3direct 将 django 连接到 s3问题是我不知道如何将文件从 swift 上传到 django。
我在管理面板中使用了 django-s3direct,它们提供了一个很好的方法来生成用于上传文件的表单,但我不知道如何使用这个 django 插件从 swift 上传文件。
我应该找到一种不同的方式将 django 后端连接到 amazon s3 吗?有没有相关的教程? (我找不到)
最佳答案
您的 View 应该能够通过 POST
请求接收 FILES
以及当您从常规 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)")
关于python - 文件从swift上传到django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29975408/
我是一名优秀的程序员,十分优秀!