[英]Error while trying to upload a file
我有一个文件上传控件和一个按钮:
<asp:FileUpload ID="venfileupld" runat="server" />
<asp:Button ID="venupld1" runat="server" Text="Upload" OnClick="venupld1_Click" />
在按钮单击事件中,我正在这样做:
string name = venfileupld.PostedFile.FileName;
string filepath = Server.MapPath("upload_excel/") + name;
venfileupld.PostedFile.SaveAs(filepath);
writetoven();
但这给我一个错误。
我的第一个问题是为什么我在网上遇到错误:
string name = venfileupld.PostedFile.FileName;
上载者没有任何文件,为空。
第二个问题是如何获取可以传递给名为的函数的文件:
writetoven();
有什么帮助吗?
您必须先通过属性“ HasFile”检查上传控件的文件,然后再将文件名分配给变量“ name”,然后才能通过以下链接查看最佳示例: http : //asp-net-example.blogspot.in/2008/10 /fileupload-control-example.html
首先,请确保在表单标签中使用enctype=multipart/form-data
。 这样可以将文件上传控件发布到asp.net服务器,并且您将开始在venfileupld.PostedFile
对象和其他属性中接收数据。
使用venfileupld.HasFile
和venfileupld.ContentLength
属性来确保文件已上传且不为0kb。
-更新-
基于您正在使用更新面板的事实,您可以尝试添加回发触发器,例如
<Triggers> <asp:PostBackTrigger ControlID="btnUploadControlId" /> </Triggers>
-----更新结束----
如果这不能解决您的问题,请添加更多详细信息。
您是否将ASP.NET Ajx与UpdatePanel一起使用? ...是的,我正在使用ajax和updatepanel
FileUpload在UpdatePanel
内部不起作用。 您必须使用ASPNET AJAX控件工具包中的AsyncFileUpload 。
在此处查看更多详细信息: http : //knowledgebaseworld.blogspot.de/2009/02/file-upload-not-working-with-update.html
您应该处理AsyncFileUpload
控件的UploadedComplete
事件:
private static List<string> allowedExtensions = new List<string>(new string[] {
".xls",
".xlsx"
});
protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
if (e.state == AjaxControlToolkit.AsyncFileUploadState.Success) {
string fileExt = System.IO.Path.GetExtension(e.filename);
if (allowedExtensions.Contains(fileExt)) {
string fileName = System.IO.Path.GetFileName(e.filename);
string dir = Server.MapPath("upload_excel/");
string path = Path.Combine(dir, fileName);
AsyncFileUpload1.PostedFile.SaveAs(path);
AsyncFileUpload1.FileContent.Close();
} else {
// wrong extension
}
} else {
// log and show error
}
}
尝试以下操作:
后面的代码:
protected void venupld1_Click(object sender, EventArgs e)
{
string name = venfileupld.FileName;
string filepath = Server.MapPath("~/upload_excel/") + name;
venfileupld.PostedFile.SaveAs(filepath);
}
内联代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">
<ContentTemplate>
<asp:FileUpload ID="venfileupld" runat="server" />
<asp:Button ID="venupld1" runat="server" Text="Upload" OnClick="venupld1_Click" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="venupld1" />
</Triggers>
</asp:UpdatePanel>
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.