文件从swift上传到djang

2024-09-28 05:15:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用django后端从swift iOS应用程序上传照片和视频到amazons3。我发现了一个django应用程序,它使用https://github.com/bradleyg/django-s3direct将django连接到s3,问题是我不知道如何将文件从swift上传到django。在

django-s3direct我在管理面板工作,他们提供了一个很好的方法来生成一个上传文件的表单,但是我不知道如何使用这个django插件从swift上传文件。在

我是否应该找到另一种将django后端连接到amazons3的方法?有没有关于这个的教程?(我找不到)


Tags: 文件django方法httpsgithubcom应用程序视频
1条回答
网友
1楼 · 发布于 2024-09-28 05:15:25

您的视图应该能够通过POST请求接收FILES,并且当您从常规html表单接收上载的图片时,您应该能够执行常规的操作。然后,您所要做的就是在iOS中创建多部分表单,并将其发布到接收方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)")

相关问题 更多 >

    热门问题