如何使用jquery发布的uploadfile

时间:2013-07-01 08:44:26

标签: jquery file-upload

我的页面中有一个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);

    });

作者写道:“在代码级别,这将作为普通文件上传工作”但我无法理解如何。有谁知道它?

1 个答案:

答案 0 :(得分:0)

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

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