我試圖通過發送文件的ID從服務器下載文件。我嘗試了幾件事,但該文件正在下載爲CFNetworkDownload.tmp文件。Swift下載任務請求文件下載不起作用
我希望它保存爲存在的文件。文件類型可以是PNG,JPEG,PDF,DOCX,PPTX,XLSX。嘗試了很多事情,但徒勞無功。我敢肯定它一定是簡單的東西,我很想在這裏明白
試過以下。在大多數例子中,差異是文件名在URL中。但我發送id並獲取文件作爲迴應。
How to download file in swift?
How To Download Multiple Files Sequentially using NSURLSession downloadTask in Swift
下面是我的代碼。
func downloadFile(id : String, fileName : String) -> Void {
let session = URLSession.shared
let url = URL(string: qaDownloadURL+id)!
var request = URLRequest(url: url)
request.httpMethod = "POST"
let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
if let tempLocalUrl = tempLocalUrl, error == nil {
// Success
if let statusCode = (response as? HTTPURLResponse)?.statusCode {
print("Success: \(statusCode)")
}
do {
// let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
//
// self.savePath = documentsUrl!.absoluteString + "/" + fileName
//
// let fileURL = URL(fileURLWithPath: self.savePath)
//
// let dataFromURL = NSData(contentsOf: tempLocalUrl)
// dataFromURL?.write(to: fileURL, atomically: true)
var documentsDirectory: String?
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
if paths.count > 0
{
documentsDirectory = paths.first!
}
self.savePath = documentsDirectory!// + "/" + fileName
let fileURL = URL(fileURLWithPath: self.savePath)
let dataFromURL = NSData(contentsOf: tempLocalUrl)
dataFromURL?.write(to: fileURL, atomically: true)
// try FileManager.default.copyItem(at: tempLocalUrl, to: fileURL)
DispatchQueue.main.async {
let documentController = UIDocumentInteractionController.init(url: fileURL)
documentController.delegate = self
documentController.presentPreview(animated: true)
}
} catch (let writeError) {
print("error writing file \(self.savePath) : \(writeError)")
}
} else {
print("Failure: %@", error?.localizedDescription);
}
}
task.resume()
}
是的,我剛剛也試過。不起作用:( –
問題是你使用「POST」方法而不是「GET」。順便說一句,你應該只使用一個URL。當你只想獲得某些東西(不是POST)時不需要使用URLRequest –
順便說一句應該幫助http://stackoverflow.com/a/27643660/2303865 –