gpt4 book ai didi

python - 文件从swift上传到django

转载 作者:行者123 更新时间:2023-11-30 10:15:57 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com