2017-09-28 18 views
1

ファイルをアップロードする必要があり、アップロードする前にファイルを複数のチャンクに分割するよう指示されています。だから質問があります:チャンク内のデータを分割してサーバーにアップロード

1)ファイルを "データ"タイプ(バイト)に変換しました。どのように1MBのチャンクに分割するのですか?
2)分割後、Alamofireを使用してアップロードするにはどうすればよいですか? Alamofireを使用することができない場合、私はそれを行う方法をお勧めします。

私はスイフト3とコード8.3を使用しています。どんな助けでも大歓迎です。

+0

チェック働くかもしれないと思う:https://stackoverflow.com/questions/19343053/how-to-work-with-large-file-uploads-in-ios、ここをhttps://stackoverflow.com/questions/19833223/upload-large-file-video-to-server-in-ios –

答えて

1

私は、これはSOここ

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   
} 
関連する問題