将数据分块并上传到服务器
Posted
技术标签:
【中文标题】将数据分块并上传到服务器【英文标题】:Split Data in chunks and upload to server 【发布时间】:2017-09-28 08:14:12 【问题描述】:我有一个需要上传到服务器的文件,我被告知在上传之前将文件分成多个块。那么问题来了:
1) 我已将文件转换为“数据”类型(字节)。如何将其拆分为每个 1MB 的块? 2)拆分后,如何使用Alamofire上传?如果无法使用 Alamofire,请推荐我该怎么做。
我正在使用 swift 3 和 Code 8.3。非常感谢任何帮助。
【问题讨论】:
在这里检查:***.com/questions/19343053/… 和这里***.com/questions/19833223/… 【参考方案1】:我认为这可能有效
let path = Bundle.main.url(forResource: "test", withExtension: "png")!
do
let data = try Data(contentsOf: path)
let dataLen = (data as NSData).length
let fullChunks = Int(dataLen / 1024) // 1 Kbyte
let totalChunks = fullChunks + (dataLen % 1024 != 0 ? 1 : 0)
var chunks:[Data] = [Data]()
for chunkCounter in 0..<totalChunks
var chunk:Data
let chunkBase = chunkCounter * 1024
var diff = 1024
if chunkCounter == totalChunks - 1
diff = dataLen - chunkBase
let range:Range<Data.Index> = chunkBase..<(chunkBase + diff)
chunk = data.subdata(in: range)
chunks.append(chunk)
// Send chunks as you want
debugPrint(chunks)
catch
// Handle error
【讨论】:
这个在将 nsdata 拆分为 nsdata 块时工作正常 如果文件很大,它会在let data = try Data(contentsOf: path)
这一行崩溃。但是这种方法适用于小文件。
嗨,我在这一行出错:“let range:Range以上是关于将数据分块并上传到服务器的主要内容,如果未能解决你的问题,请参考以下文章