我正在尝试将保存到应用程序(使用 ResearchKit 构建)中的目录的文件上传到服务器(通过 REDCap API)。REDCap API Playground 建议使用多种语言编写代码,但不建议使用 Obj-C 或 Swift。对于这种情况,我需要使用 Swift,这对我来说是第一次。以下是我尝试的一种方法,不幸的是,该方法不起作用:
func postFileToRedcap (_ fileUrl: URL) {
guard let url = URL (string: "https://our_redcap_url.edu/api/") else {return}
let token = "ABCDEFGHIJK123456789" // unique to REDCap project
let record = "1" // can be set elsewhere
let event = ""
let field = "file_upload_field" // name of field in REDCap
if !fileUrl.pathComponents.isEmpty {
let fileName = URL(fileURLWithPath: fileUrl.absoluteString).lastPathComponent
var request = URLRequest.init(url: url)
request.httpMethod = "POST"
// parameters required by REDCap
request.addValue(token, forHTTPHeaderField: "token")
request.addValue(fileName, forHTTPHeaderField: "content")
request.addValue("import", forHTTPHeaderField: "action")
request.addValue(record, forHTTPHeaderField: "record")
request.addValue(field, forHTTPHeaderField: "field")
request.addValue(event, forHTTPHeaderField: "event")
request.addValue("json", forHTTPHeaderField: "returnFormat")
let task = URLSession.shared.uploadTask(
with: request,
fromFile: fileUrl
)
task.resume()
}
}
主要问题似乎是参数设置,但我似乎找不到适用于 REDCap 的解决方案。
所有的帮助都亲切地接受了。提前致谢!