0

我的页面中有一个 FileUpload。如何通过这个 FileUpload 将选定的文件发布到 JQuery 的主机路径中?我在互联网上找到了这段代码:

HTML

<input id="file" type="file" name="file"/>
<div id="response"></div>

JS

jQuery('document').ready(function(){

        var input = document.getElementById("file");
        var formdata = false;
        if (window.FormData) {
            formdata = new FormData();
        }
        input.addEventListener("change", function (evt) {

            var i = 0, len = this.files.length, img, reader, file;

            for ( ; i < len; i++ ) {
                file = this.files[i];

                if (!!file.type.match(/image.*/)) {
                    if ( window.FileReader ) {
                        reader = new FileReader();
                        reader.onloadend = function (e) { 
                            //showUploadedItem(e.target.result, file.fileName);
                        };
                        reader.readAsDataURL(file);
                    }

                    if (formdata) {
                        formdata.append("image", file);
                        formdata.append("extra",'extra-data');
                    }

                    if (formdata) {
                        jQuery('div#response').html('<br /><img src="ajax-loader.gif"/>');


                        jQuery.ajax({
                            url: "upload.aspx/Upload",
                            type: "POST",
                            data: formdata,
                            processData: false,
                            contentType: false,
                            success: function (res) {
                             jQuery('div#response').html("Successfully uploaded");
                            }
                        });
                    }
                }
                else
                {
                    alert('Not a vaild image!');
                }   
            }

        }, false);

    });

作者写道“在代码级别,这将像正常的文件上传一样工作”,但我不明白怎么做。有谁知道吗?

4

1 回答 1

0

要将其发送到 WebMethod,您仍然需要将 Base64 字符串作为 JSON 发送,并且需要将 contentType 正确设置为application/json. 我相信 ASP.NET 会简单地忽略您对 upload.aspx/Upload 的请求,否则。

或者,将该文件 POST 到您自己的 HttpHandler 中可能更直接,因此您可以访问更接近金属的 POST 数据。

于 2013-07-03T14:40:56.017 回答