2016-05-28 9 views
0

私はアンドロイドからasp.netサーバーにチャンクファイルを送信しようとしています。クライアントサイドコードは次のようになります。アンドロイドからサーバーにチャンクファイルをアップロード

Public async Task<String> Upload(File file){ 
final int cSize = 1024 * 1024; // size of chunk 
final long pieces = file.length()/cSize // used to return file length. 

HttpPost request = new HttpPost(endpoint); 

BufferedInputStream stream = new BufferedInputStream(new FileInputStream(file)); 

for (int i= 0; i< pieces; i++) { 
    byte[] buffer = new byte[cSize]; 

    if(stream.read(buffer) ==-1) 
     break; 

    MultipartEntity entity = new MultipartEntity(); 
    entity.addPart("chunk_id", new StringBody(String.valueOf(i))); //Chunk Id used for identification. 
    request.setEntity(entity); 
    ByteArrayInputStream arrayStream = new ByteArrayInputStream(buffer); 

    entity.addPart("file_data", new InputStreamBody(arrayStream, filename)); 

    HttpClient client = app.getHttpClient(); 
    client.execute(request); 
} 

アップロード方法はサーバー側でどのように見えるのですか?各チャンクを送信するために接続を開始する必要がありますか、それともMultipartEntityによって処理されていますか?また、チャンクのアップロードごとにサーバー側のメソッドが何度も何度も呼び出されていますか? リソースを検索しようとしましたが、チャンクファイルがサーバー側でどのように処理されるかを示すものは見つかりませんでした。誰かが私に何か指針を提供できるのであれば、本当に感謝します。あなたは、コードの下に試すことができ

+1

私の質問をd​​ownvoted人に。投票する前に少なくとも質問に答えようと努力する。これは、私のような初心者の方には、本物の質問をするのに苦労しています。なぜなら、オンラインで役立つリソースが見つからなかったからです。非常に悲しいです。 –

+0

イメージやビデオをアップロードしていますか? – user3151766

+0

@ user3151766ビデオをアップロードしています –

答えて

0

、あなたのビデオは、base64文字列として送信する必要があります。

byte[] imageBytes = Convert.FromBase64String("Base64MessageString"); 

string FileName = "FileName"; 

MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); 

string FilePath = System.Web.Hosting.HostingEnvironment.MapPath("~\\Video\\") + subPath + "\\"; 
string FullFilePath = FilePath + FileName; 

FileInfo imageFile = new FileInfo(FullFilePath); 

FileStream fs = new FileStream(FullFilePath, FileMode.Create); 
ms.Write(imageBytes, 0, imageBytes.Length); 
ms.WriteTo(fs); 
+0

上記のコードでチャンクをどのように再構築しましたか? –

+0

この場合、チャンクはありません。これはbase64形式の文字列になります。 – user3151766

関連する問題