Swift로 작성된 OS X 프로젝트에서 Quickblox 서버에 sqlite 파일을 업로드하려고합니다. 내가 Alamofire을 사용하고, OS X와 SDK없이 Quickblox에 파일 업로드 (이상적으로 Alamofire)
let file = QBCOFile()
file.name = "ThisFileName"
file.contentType = "sqlite"
let theData = NSData(contentsOfFile: originalPath)
file.data = theData
QBRequest.uploadFile(file, className: "MyClassName", objectID: cusObjID, fileFieldName: "FieldName", successBlock: {(response:QBResponse,fileUploadInfo:QBCOFileUploadInfo?) in
}, statusBlock: nil, errorBlock: {(response:QBResponse) in
showError()
})
이 한 일을 다른 요청을받은하지만하지 않은 : 난 이미 Quickblox 아이폰 OS SDK와 iOS에서이 문제를 알아 냈어요. 자신의 API 페이지 (https://quickblox.com/developers/Custom_Objects#Upload.2FUpdate_file)에 요청의 설명은 이것이다 :이 설명과 다른 사람 사이의
curl -X POST -H "QB-Token: e7cde5f7f5b93f3fa5ac72a281777cbf0f908374" -F "field_name=avatar" -F '[email protected]"ava.jpg"' https://api.quickblox.com/data/<Class_name>/<record_id>/file.json
하나의 주요 차이점은 내가 함께 할 모르겠어요은 "-F"의입니다.
Alamofire.upload(Method.POST, "https://api.quickblox.com/data/MyClassName/\(cusObjID)/file.json",
headers: ["QB-Token":realToken],
multipartFormData: { multipartFormData in
if let valData = "FieldName".dataUsingEncoding(NSUTF8StringEncoding) {
multipartFormData.appendBodyPart(data: valData, name: "field_name")
}
multipartFormData.appendBodyPart(data: theData, name: "ThisFileName", fileName: "ThisFileName.sqlite", mimeType: "multipart/form-data")
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
내가 토큰과 내가 다른 요청에서 그들을 사용했기 때문에 사용자 정의 개체 ID (cusObjID) 일을 알고 여기에 지금까지 시도한 코드의 한 변형이다. 나는 "appendBodyPart"부분에 변화의 톤을 시도했다, 그들은 모두 나에게이 결과 준 :
[Result]: SUCCESS: {
errors = (
"Wrong arguments"
);
}
을하고 응답 내가 여기에 몇 가지 답변을 보았다
Status = "404 Not Found";
을 포함하고있다 StackOverflow는 이러한 유형의 업로드에는 Alamofire가 작동하지 않을 수도 있음을 제안하므로 다른 방법으로이 작업을 수행 할 수 있다면 좋을 것입니다. iOS Quickblox SDK를 사용하여 iOS에서 한 작업을 수행하는 방법은 무엇입니까? 이 질문에 (Uploading file with parameters using Alamofire)의 마지막 대답의 편집을 사용하여
는UPDATE
, 나는
.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
Swift.print("\(totalBytesWritten)/\(totalBytesExpectedToWrite)")
}
하지만 그럼에도 불구하고 파일 업로드로 업데이트 할 진전을 얻을 수있었습니다 I 여전히 같은 오류가 발생합니다. 그런데,이 내 요청 헤더가 성공적으로 iOS 버전에서 모습입니다 :
Request headers: {
"Accept-Language" = "en-US;q=1";
"Content-Length" = 6488309;
"Content-Type" = "multipart/form-data; boundary=Boundary+88AB02F344BB7C4E";
"QB-Token" = b6f06b9e6e45c839aecc89019add6bd1;
"User-Agent" = "App Name/2.1 (iPhone; iOS 9.3; Scale/2.00)";
}