C# 如何在服务器上上传文件?

C# 如何在服务器上上传文件?,c#,.net,asp.net,gridview,file-upload,C#,.net,Asp.net,Gridview,File Upload,我已经在服务器上部署了我的软件,在我的软件中有一个读取excel文件并在gridView中显示内容的工具 它在我的单机PC上运行良好,如何在网络上运行 我应该将excel文件上传到服务器上,然后读取,还是直接从用户的PC上读取 有什么解决方案吗?您不能直接从用户PC读取,您仍然需要上传文件。您需要在页面上设置文件上传控制 <asp:FileUpload ID="fup" runat="server" /> 你可以看看这篇文章 而且它在本地环境中运行良好,因为实际上您的网站和您试图

我已经在服务器上部署了我的软件,在我的软件中有一个读取excel文件并在gridView中显示内容的工具

它在我的单机PC上运行良好,如何在网络上运行

我应该将excel文件上传到服务器上,然后读取,还是直接从用户的PC上读取


有什么解决方案吗?

您不能直接从用户PC读取,您仍然需要上传文件。

您需要在页面上设置文件上传控制

<asp:FileUpload ID="fup" runat="server" />
你可以看看这篇文章


而且

它在本地环境中运行良好,因为实际上您的网站和您试图读取的文件都在同一台机器上。因此,web服务器可以直接加载文件,没有问题


在实时环境中,网站将位于某个服务器上,而excel文件将位于用户自己的pc上。在这种情况下,web服务器无法访问该文件,您必须通过文件上载对话框上载到web服务器。然后,您可以将此文件保存到服务器上指定的安全文件夹中(最好是在您的web.config中,以防您改变主意或需要移动它),并访问该文件,以便在您选择的情况下显示、操作甚至插入数据库。

到目前为止,我还没有收到您的问题。web上发生了哪种错误

下面是可能对您有所帮助的示例代码。 每次它从客户机上传服务器上的excel文件,从那个里获取数据并绑定网格时

      protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
        {    
            if (AsyncFileUpload1.HasFile)
            {
                string strPath = MapPath("~/Uploads/") + System.IO.Path.GetFileName(e.filename);
                 // gets extension of a file to check for a valid excel file
                string ext = System.IO.Path.GetExtension(e.filename); 
                if (ext.ToLower() == ".xlsx" || ext.ToLower() == ".xls")
                {
                    AsyncFileUpload1.SaveAs(strPath);
                }       
                DataTable dt = getdata(strPath); // get data from excel file
                BindGrid(dt); 
            }


        }

我认为你不应该把它保存到你的服务器上,除非你真的必须这样做(这需要对你保存到的目录有写权限)。如果您使用Open XML读取Excel文件,您可以直接读取发布的流,而无需先通过
电子表格文档保存到文件中。Open(FileUpload1.PostedFile.InputStream,false)

您不太明白您的问题吗?您是否制作了在独立pc上运行的桌面应用程序,或者您的web应用程序是否在visual studio上的独立pc上运行?那为什么你的标题会上传到服务器上
      protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
        {    
            if (AsyncFileUpload1.HasFile)
            {
                string strPath = MapPath("~/Uploads/") + System.IO.Path.GetFileName(e.filename);
                 // gets extension of a file to check for a valid excel file
                string ext = System.IO.Path.GetExtension(e.filename); 
                if (ext.ToLower() == ".xlsx" || ext.ToLower() == ".xls")
                {
                    AsyncFileUpload1.SaveAs(strPath);
                }       
                DataTable dt = getdata(strPath); // get data from excel file
                BindGrid(dt); 
            }


        }