下载的文件 MP3 文件通过 Swift 中的 NSURL Session 损坏
Posted
技术标签:
【中文标题】下载的文件 MP3 文件通过 Swift 中的 NSURL Session 损坏【英文标题】:The downloaded file, MP3 File, is damaged through NSURL Session in Swift 【发布时间】:2016-10-29 07:36:24 【问题描述】:我尝试用 swift 在 iPhone 中下载 mp3 文件。但这些文件有时会损坏。 (由于这个问题,下载的 Mp3 的持续时间发生了变化。所以它无法在 MPmovieplayer 中读取正确的持续时间)我不知道为什么。你能帮我解决问题吗?
func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse)
self.totalByte = self.totalByte + Double(response.expectedContentLength)
self.delegate?.onDownLoadStart?(self.fileId,filePath:self.savePath, fileLength: self.totalByte,loadPath:self.filePath, info:self.info!)
func connection(connection: NSURLConnection, didReceiveData data: NSData)
if(self.isSaved)
if(self.bigFile == nil)
if(self.file != nil)
self.file!.appendData(data)
self.bigFile = NSFileHandle(forUpdatingAtPath: self.savePath)
self.file = nil
else
self.bigFile!.seekToEndOfFile()
self.bigFile!.writeData(data)
self.progressByte = progressByte + Double(data.length)
else
if(self.file == nil)
self.file = NSMutableData()
self.file!.appendData(data)
progressByte = Double(file!.length)
self.delegate?.onDownLoadProgress?(self.fileId, progressPct:Float(self.progressByte/self.totalByte))
func connectionDidFinishLoading(connection: NSURLConnection)
self.delegate?.onDownLoadComplete(self.fileId, filePath:self.savePath, fileData:self.file,loadPath:self.filePath, info: self.info!)
self.removeFileHandle()
private func removeFileHandle()
bigFile?.closeFile()
bigFile=nil;
file=nil;
func connection(connection: NSURLConnection, didFailWithError error: NSError)
print("DownLoader path="+self.filePath+" errorCode="+error.code.description);
self.removeFileHandle()
self.delegate?.onDownLoadError?(self.fileId,filePath:self.savePath, withError:error)
【问题讨论】:
【参考方案1】:你试过 Alamofire 吗?我强烈建议将此 pod 用于任何 HTTP 请求/下载。 例子: Alamofire.download() method: Where is the file and did it save successfully?
【讨论】:
以上是关于下载的文件 MP3 文件通过 Swift 中的 NSURL Session 损坏的主要内容,如果未能解决你的问题,请参考以下文章
swift 录制多个音频 并将音频转换为mp3 并合成多个mp3文件为一个文件
使用 AVAudioPlayer 在 Swift 中播放远程 mp3 文件