web-dev-qa-db-ja.com

ASP.NET Web API2ファイルのアップロード

MVCコンポーネントを使用せずにASP.NETWeb API 2を使用して、ファイルのアップロードとアップロードするファイルに追加された追加情報を処理する最善の方法を知りたいです。私はグーグルネットを持っています、そして私は私が予想よりもっと混乱しているとあなたに言うことができます。

追加情報はdbとディスク上のファイルに保存されます。これまでのところ、私が構築しているWebAPIアプリはmultipart/form-dataをサポートしていません。デフォルトのメディアタイプのみをサポートします。メディアフォーマッターを作成する必要があることはわかっています。

Plsは助けます。

14
Arsene

Javascript分割ファイルを作成してWEBAPIにアップロードしました。私のバックエンドコードを参照できると思います

フロントエンドでは、ファイルをアップロードするために以下のコードを使用する必要があります

  var xhr = new self.XMLHttpRequest();
  xhr.open('POST', url, false);
  xhr.setRequestHeader('Content-Type', 'application/octet-stream');
  xhr.send(chunk);

バックエンドでは、Request.InputStream.Readを使用してファイルバイトをキャッチします

    [HttpPost]
    [ValidateInput(false)]
    public string fileUpload(string filename)
    {
        byte[] file = new byte[Request.InputStream.Length];
        Request.InputStream.Read(file, 0, Convert.ToInt32(Request.InputStream.Length));
        BinaryWriter binWriter = new BinaryWriter(new MemoryStream());
        binWriter.Write(file);
        StreamReader reader = new StreamReader(binWriter.BaseStream);
        reader.BaseStream.Position = 0;
        //This example is recevied text file
        while ((line = reader.ReadLine()) != null)
        {

         };
    }
1
King Jk

Multipart/from-dataが何らかの理由で許可されていない場合は、ファイルデータをBASE64にシリアル化して、文字列として送信できます。

0
Alex Lyalka