繁体   English   中英

尝试上传文件时出错

[英]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.HasFilevenfileupld.ContentLength属性来确保文件已上传且不为0kb。

-更新-

基于您正在使用更新面板的事实,您可以尝试添加回发触发器,例如

<Triggers>
  <asp:PostBackTrigger ControlID="btnUploadControlId" />
 </Triggers>

-----更新结束----

如果这不能解决您的问题,请添加更多详细信息。

您是否将ASP.NET Ajx与UpdatePanel一起使用? ...是的,我正在使用ajax和updatepanel

FileUploadUpdatePanel内部不起作用。 您必须使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM