ios - 将数据分成 block 并上传到服务器

标签 ios alamofire swift-data

我有一个文件需要上传到服务器,我被告知在上传之前将文件分成多个 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/

相关文章:

swiftui - 绑定(bind)到 SwiftData @Query 数组中第一个元素的属性

ios - 我需要在 AlamoFire 中使用 [unowned self] 吗,还是已经处理好了?

ios - Alamofire:具有额外属性的可编码对象

iphone - iOS - UIWebView 由于解析错误而无法正常工作

ios - 使用导致内存泄漏的音频剪辑

ios - Alamofire 失败并显示 SSL 错误代码 : -1200

ios - 原生 zlib inflate/deflate for swift3 on iOS

swiftui - 尝试将新的 SwiftData 框架与谓词一起使用,但我收到 "Unsupported Predicate"错误

ios - Xcode 6.3.2 - iOS - 使用自动布局定位图像和文本

ios - 检查用户是否在 ios 上授权您的应用程序