アプリ (ResearchKit を使用して構築) 内のディレクトリに保存されたファイルをサーバーに (REDCap API 経由で) アップロードしようとしています。REDCap API プレイグラウンドでは、いくつかの言語のコードが提案されていますが、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 で機能する解決策が見つからないようです。
すべての助けを快く受け取りました。前もって感謝します!