Ajax图像上传器问题

时间:2017-02-28 17:10:19

标签: javascript c# jquery asp.net ajax

我在使用ASP制作的图像上传器时出现问题。我想使用ajax将图像上传到projects文件夹。

我的html和js:

    <form id="form1" runat="server">
    <div>
    <asp:FileUpload ID="FileUpload1" runat="server" />
        <br />
        <br />
    <a href="#" id="btnImg" onclick="uploadImg()" runat="server">UPLOAD</a>
    </div>
    </form>

<script>
    function uploadImg(){
        var formData = new FormData();
        formData.append('FileUpload1', $('#btnImg')[0].files[0]);
        $.ajax({
            type: "POST",
            url: 'Default.aspx/imageUpload',
            data: formData,
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                alert(data);
            }
        });

    }
</script>

我的图片上传代码(c#):

[WebMethod]
protected void imageUpload(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
        Guid _fileNameRandom = Guid.NewGuid();
        string _fileNameStr = _fileNameRandom.ToString();
        FileUpload1.PostedFile.SaveAs(Server.MapPath("/Images/") + (_fileNameStr + fileName));
        Response.Redirect(Request.Url.AbsoluteUri);
    }
}

在控制台中我收到以下错误: 未捕获的TypeError:无法读取属性&#39; 0&#39;未定义的     在uploadImg(Default.aspx:32)     在HTMLAnchorElement.onclick(Default.aspx:21)

default.aspx中的第32行是:}); js脚本。 第21行是:function uploadImg(){

希望任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

$('#btnImg')[0]是罪魁祸首。

$('#btnImg')[0]永远不会有文件集合,因为它是一个锚元素,请尝试将其更改为$('#FileUpload1')[0],看看是否有效?如果没有,你需要引用input[type='file']元素,我认为ASP助手应该为你提供该ID。