ASP:将文件路径完全复制到我的代码隐藏方法中
本文关键字:我的 代码 隐藏 方法 复制 文件 路径 ASP | 更新日期: 2023-09-27 18:33:43
我想将 excel 文件复制到我的数据库中。我遇到的问题是我似乎无法将路径复制到代码隐藏中。这是我的asp代码:
<asp:FileUpload id="FileUploadControl" runat="server" />
<asp:Button runat="server" id="UploadButton" text="Upload" onclick="UploadButton_Click" />
<br /><br />
<asp:Label runat="server" id="StatusLabel" text="Upload status: " />
如果我在路径中硬编码,那么我的代码将起作用:
string path = @"C:'Users'moynik'Desktop'datatest.xls";
但是如果我使用以下行,我只会得到一条不同的路径,这将不起作用。
string path = Path.GetFullPath(FileUploadControl.FileName);
但我需要使我的路径动态化,以便用户可以在自己的计算机上从不同的目的地上传。谁能帮我。这是工作并将Excel文件复制到我的数据库的功能
如果这是不可能的,如果他们想到一个解决方案,有人可以帮助我解决问题。谢谢
protected void UploadButton_Click(object sender, EventArgs e)
{
if (FileUploadControl.HasFile)
{
try
{
string path = @"C:'Users'moynik'Desktop'datatest.xls";
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
using (OleDbConnection connection = new OleDbConnection(connStr))
{
OleDbCommand command = new OleDbCommand ("Select Name,Address,Age FROM [Sheet1$]", connection);
connection.Open();
using (DbDataReader dr = command.ExecuteReader())
{
string sqlConnectionString = "SERVER=<servername>;UID=schafc;Trusted_Connection=Yes;DATABASE=<dbname>;";
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "<tableName>";
bulkCopy.WriteToServer(dr);
}
}
}
StatusLabel.Text = "Upload status: File uploaded!";
}
catch (Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
尝试Path.GetFileName(FileUploadControl.FileName)
而不是.GetFullPath
。
http://asp.net-tutorials.com/controls/file-upload-control/
编辑:啊,我刚刚弄清楚你想做什么。需要先将 xls 文件上载到服务器位置,然后将服务器上文件的路径传递到连接字符串中。
例如
string filename = Path.GetFileName(FileUploadControl.FileName);
string path = Server.MapPath("~/") + filename;
FileUploadControl.SaveAs(path);
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";
...
FileUpload 控件是服务器端控件,代码
Path.GetFullPath(FileUploadControl.FileName);
在服务器上执行,而不是在客户端执行。我不确定您所说的"我需要使我的路径动态化,以便用户可以在自己的计算机上从不同的目的地上传"是什么意思。用户始终可以从其计算机上的任何目标中选择文件。
该文件实际上并不存在于您的服务器磁盘,直到您将其保存在某个地方。请参阅 FileUpload.SaveAs 方法的 MSDN 文档。手动指定的路径正常工作的唯一原因是应用位于开发计算机上,因此有权访问该文件。实际上,您对硬编码路径执行的操作是完全绕过上传控件。
string path = Path.Combine(@"C:'MyUploadDirectory", FileUploadControl.FileName);
FileUploadControl.SaveAs(path);
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=Excel 8.0;";