1

HTML5 FormData を使用してファイルをアップロードする簡単なスクリプトがあります。HTML5 をサポートするほとんどのブラウザーで正常に動作します (Chrome、FireFox、Opera、およびIE10 Metroに対してテストしました)。動作しない唯一のブラウザはIE10 Desktopです。問題はファイルがアップロードされていないことです。サーバー側でRequest.Files.Countは常にゼロです。

理由、またはこれは単なる IE10 デスクトップのバグですか?

スクリプトは次のとおりです。

<input type="file" id="fileInput" multiple="true"/>
<button type="button" id="uploadButton">Upload</button>
<div>
    <span>Status: </span> <strong id="status"></strong>
</div>

<script src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">

    var files = [];

    $(document).ready(function() {

        $('#fileInput').change(function (e) {
            // Add all selected files to 'files' array

            $.each(e.target.files, function(i, item) {
                files.push(item);
            });
        });


        $('#uploadButton').click(function () {

            // Put files to FormData
            var formData = new FormData();
            $.each(files, function(i, item) {
                formData.append('X-FILE-' + i, item);
            });

            // Send FormData to server
            $.ajax({
                url: '/home/upload',
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                type: 'POST',
                success: function (data) {
                    if (data == "YES") {
                        $('#status').text("File Uploaded");
                    } else {
                        $('#status').text("File NOT Uploaded");
                    }
                }
            });
        });
    });
</script>

「/home/upload」アクションをキャプチャするサーバー側のコードは次のとおりです。

[HttpPost]
public ActionResult Upload()
{
    var success = Request.Files.Count > 0;
    return Content(success ? "YES" : "NO");
}

また、 https://github.com/budiadiono/IE10VSHtml5の Github のパブリック リポジトリにコードをプッシュしました。

前もって感謝します!

4

1 に答える 1

1

これはIE 10デスクトップのバグだと確信しています。Telerik のデモhttp://demos.telerik.com/aspnet-ajax/asyncupload/examples/overview/defaultcs.aspx IE 10 デスクトップでは機能しませんが、IE 10 Metro では正常に機能します。

より具体的には、IE 10 デスクトップ バージョンを次に示します。

Version: 10.0.9200.16540
Update Versions: 10.0.4 (KB2817183)
Product ID: 00150-20000-00003-AA459
于 2013-04-19T08:14:15.257 に答える