我在使用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(){
希望任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
$('#btnImg')[0]
是罪魁祸首。
$('#btnImg')[0]
永远不会有文件集合,因为它是一个锚元素,请尝试将其更改为$('#FileUpload1')[0]
,看看是否有效?如果没有,你需要引用input[type='file']
元素,我认为ASP助手应该为你提供该ID。