2017-02-28 52 views
1

我在使用ASP製作圖片上傳器時遇到了問題。我想使用ajax將圖像上傳到項目文件夾。Ajax圖片上傳者問題

我的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); 
    } 
} 

控制檯我得到以下錯誤: 遺漏的類型錯誤:無法讀取屬性 '0' 的undefined at uploadImg(Default.aspx:32) at HTMLAnchorElement.onclick(Default.aspx:21)

defau中的第32行lt.aspx是:});的js腳本。 和第21行是:function uploadImg(){

希望任何人都可以幫我解決這個問題。

+1

這行是問題:'$('#btnImg')[0] .files [0]',雖然目前還不清楚爲什麼。你選擇一個文件後是否運行這段代碼? –

+0

你能更精確嗎? :) – mheonyae

回答

1

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

$('#btnImg')[0]永遠不會有文件集合,因爲這是一個錨元素,請嘗試將其更改爲$('#FileUpload1')[0],然後查看它是否有效?如果沒有,你需要引用input[type='file']元素,我認爲ASP幫助者應該使用該ID爲你呈現。

+0

如果我更改爲$('#FileUpload1')[0]我得到:Uncaught TypeError:非法調用。你可以更具體的輸入[type ='file']?在這個部門的新... – mheonyae

+0

嘗試'formData.append('FileUpload1',$(「input [type = file]」)[0] .files [0]);相反。這假定您只有一個文件上傳控件在頁面上。 – Lunster

+0

我tryed這一點,但仍然沒有工作:遺漏的類型錯誤:非法調用 在E(jquery.min.js:4) 在XB(jquery.min.js:4)Function.r.param (jquery.min。 js:4) at function.ajax(jquery.min.js:4) at uploadImg(Default.aspx:33) at HTMLAnchorElement.onclick(Default.aspx:21) – mheonyae