我有一个文件需要上传到服务器,我被告知在上传之前将文件分成多个 block 。那么问题来了:
1) 我已将文件转换为“数据”类型(字节)。如何将其拆分为每个 1MB 的 block ?
2)拆分后,如何使用Alamofire上传?如果不可能使用 Alamofire,请推荐我该怎么做。
我使用的是 swift 3 和 Code 8.3。非常感谢任何帮助。
最佳答案
我认为这可行
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
}
关于ios - 将数据分成 block 并上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464177/