2

Internet Explorer 6/9 で Blueimp jQuery File Upload を使用してアップロードしようとすると、ASP.NET は要求内のファイルを見つけることができません。次のような基本的なコードがあります

[HttpPost]
public JsonResult Images()
{
    HttpPostedFileBase file = Request.Files[0] as HttpPostedFileBase;
}

私のjQueryは次のようになります:

$('#fileupload').fileupload({
                    //forceIframeTransport: true,
                    //contentType: 'multipart/form-data',
                    //replaceFileInput: false,
                    //contentType: 'text/plain',
                    //dataType: 'text/plain',
                    url: '@Url.Action("Images", "Upload")',
                    //autoUpload: true,
                    done: function (e, data) {
                        $('.file_result').html('');
                        $('.file_result').append(data.result.text + "<br>");
                    }
                });

最初の部分は動作している場合で、2 番目の部分は IE7-9 を使用している場合です。 ここに画像の説明を入力

4

2 に答える 2

12

通常、この種の問題は jquery.iframe-transport.js が含まれていないことが原因です。

このプラグインは、以前のバージョンではXMLHTTPRequestファイルのアップロードをサポートしていない Microsoft Internet Explorer や Opera などのブラウザ用の Iframe トランスポート モジュールを利用します。

あなたのコードに見られるもう 1 つの問題は、JavaScript コードで and を設定していないことです。応答 contentTypeは次のようになります。dataTypeContent-typetext/plain

そこでは、参照用に 2 つの実用的な実装を見つけることができます。

http://www.webtrendset.com/2011/06/22/complete-code-example-for-using-blueimp-jquery-file-upload-control-in-asp-net/

https://github.com/ieb/jQueryFileUpload.Net

于 2013-11-11T08:59:00.690 に答える
0

私はこれに似た問題を抱えていたので、解決策が誰かを助けることを願っています:

私がやっていることは、ファイルを WCF サービスの Web メソッドに送信してから、それらを Web サーバー上のフォルダーに書き込むことです。Firefox と Chrome ではすべて正常に動作しましたが、IE では (残念ながら IE をサポートする必要があります)、ファイルの内容はヘッダーで送信されましたが、サーバーには書き込まれませんでした。

Fiddlerでトラフィックを見たところ、IEでリクエストを送った場合、HttpContextリクエストでFileNameプロパティが「C:\somelocalclientfolder\somefile.txt」になっていました。Chrome と Firefox では、単に"somefile.txt"でした。ファイル名だけを解析して抽出するステートメントをいくつか追加し、問題を解決しました。ファイルは IE、Chrome、および Firefox で正常に書き込まれます。

また、他の人が述べたように、リクエストがIEで行われた場合、レスポンスのContent-Typeを「text/plain」に設定する必要があります。.NET には、リクエストの作成に使用されたブラウザのタイプを返すクラスがいくつかあるため、それらを使用してサーバー側で IE がリクエストを作成しているかどうかを判断し、そのために Content-Type を「text/plain」に設定するだけです。特定の状況。

于 2013-11-13T16:54:50.027 に答える