Разделить данные на куски и загрузить на сервер

У меня есть файл, который нужно было загрузить на сервер, и мне сказали разделить файл на несколько частей перед загрузкой. Итак, вот вопрос:

1) Я преобразовал файл в тип данных (в байтах). Как мне разбить его на куски по 1 МБ каждый?
2) После разделения, как я могу загрузить его с помощью Alamofire? Если это невозможно с помощью Alamofire, пожалуйста, порекомендуйте, как мне это сделать.

Я использую Swift 3 и код 8.3. Буду признателен за любую оказанную помощь.

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> = Range<Data.Index>(chunkBase..<(chunkBase + diff))
        chunk = data.subdata(in: range)

        chunks.append(chunk)
    }

    // Send chunks as you want
    debugPrint(chunks)
}
catch
{
    // Handle error        
}
Другие вопросы по тегам