Ios 带backgroundSessionConfiguration和多部分/表单数据请求的NSURLSession

Ios 带backgroundSessionConfiguration和多部分/表单数据请求的NSURLSession,ios,multipartform-data,nsurlsession,Ios,Multipartform Data,Nsurlsession,我正在尝试使用NSURLSession和backgroundSessionConfiguration将视频文件上载到transloadit.com。请求需要是multipart/formdata,请求体中有一些参数(API键等)。iOS只允许从文件uploadTaskWithRequest(request:NSURLRequest,fromFile fileURL:NSURL)进行后台上传,因此我不能只使用文件的NSData,因此transloadit返回INVALID\u FORM\u DAT

我正在尝试使用
NSURLSession
backgroundSessionConfiguration
将视频文件上载到transloadit.com。请求需要是
multipart/formdata
,请求体中有一些参数(API键等)。iOS只允许从文件
uploadTaskWithRequest(request:NSURLRequest,fromFile fileURL:NSURL)
进行后台上传,因此我不能只使用文件的NSData,因此transloadit返回
INVALID\u FORM\u DATA
响应,因为iOS在上传文件时不考虑请求体中的参数。我可以在没有视频文件数据的情况下配置
多部分/表单数据
请求,或者可能有其他解决方案吗

2016年3月27日编辑

谢谢Rob,在创建临时文件后,它开始工作了。现在我有一本字典,里面有“params”键,上传时会有一些奇怪的行为。这里我将它添加到一个
NSMutableData

body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"params\"\r\n\r\n")
body.appendString("test\r\n")
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(filePathKey)\"; filename=\"\(fileName)\"\r\n")
body.appendString("Content-Type: \(mimeType)\r\n\r\n")
body.appendData(fileData)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
appendString
是一个辅助函数,基本上执行
string.dataUsingEncoding(NSUTF8StringEncoding)
上传过程变成无限循环。只要我将
params
更改为其他内容,上传就可以正常工作。理想情况下,我需要在请求正文中发送以下词典:

let auth = ["auth": ["key": "****", "expires": ""]]
let notifyURL = ["notify_url": "http://callback_url"]
let parameters: [String: AnyObject] = ["params": [auth, notifyURL]]

将多部分请求HTTP正文的完整内容写入文件,然后将其提供给
uploadTaskWithRequest(fromFile:)