5 votes

Diviser les données en morceaux et les télécharger sur le serveur

J'ai un fichier qui doit être téléchargé sur un serveur et on m'a dit de séparer le fichier en plusieurs morceaux avant de le télécharger. Voici donc ma question :

1) J'ai converti le fichier en type "Données" (octets). Comment puis-je le diviser en morceaux de 1 Mo chacun ?
2) Après avoir divisé le fichier, comment puis-je le télécharger avec Alamofire ? si ce n'est pas possible avec Alamofire, merci de m'indiquer comment procéder.

J'utilise swift 3 et Code 8.3. Toute aide est la bienvenue.

7voto

Gigi Points 286

Je pense que cela peut fonctionner

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        
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X