2

誰かがこれに光を当てることができることを望んでいました。残念なことに、IE8 や IE9 などのブラウザーはどのタイプのファイル リーダーもサポートしていないことに気付きました。

少し調査した後、サーバーにファイルの内容を読み取らせ、それをbase64に変換してから、JavaScriptがそこから取得するクライアントに送り返します。

これは可能ですか?これをどのように行うことをお勧めしますか?

たとえば、現在、フォームが送信されるとファイルを取得する RESTful サービスをセットアップしました...

public string Post()
    {
        string readableFile="";
        HttpResponseMessage result = null;
        var httprequest = HttpContext.Current.Request;
        if (httprequest.Files.Count > 0)
        {
            foreach (string file in httprequest.Files)
            {
                var postedFile = httprequest.Files[file];
                //convert to base64? somehow?
            }
        }
        return readableFile;

    }

postedFile 変数にはファイル情報が含まれています。それを読み取り可能な形式にする必要があるだけです...しかし、私は苦労しています。

どんな考えや助けも大歓迎です!

4

2 に答える 2

1

あなたはC#を探していますよね?

string sixtyfour = System.Convert.ToBase64String(
                       myFileUploadControl.FileBytes,
                       0,
                       myFileUploadControl.FileBytes.Length);

これは、ファイル アップロード コントロールの内容を取得し、それを base64 に配置する必要があります。

于 2013-10-05T18:22:49.670 に答える
1

HttpPostedFileクラスには、データのInputStream読み取りに使用できるプロパティがあります。そのデータを base64 文字列に変換するには、次のようにします。

public string Post(HttpPostedFile file)
{
    if (file.InputStream.Length > Int32.MaxValue) // Or some other file length limitation
        throw new HttpResponseException(HttpStatusCode.BadRequest);

    int length = (int)file.InputStream.Length;

    byte[] buffer = new byte[length];

    file.InputStream.Read(buffer, 0, length);

    string encodedString = Convert.ToBase64String(buffer);

    return encodedString;
}

4GB を超える大きなファイルをサポートする場合は、大幅に異なるコーディングを行う必要がありますが、メモリ不足の例外が発生したり、ファイルをハード ディスクにキャッシュしたりしないように、ファイル サイズに妥当な制限を設定する必要があると想定しています。ドライブ。

于 2013-10-05T18:35:56.503 に答える