在ASP.NET中上传文件

时间:2010-09-03 15:58:27

标签: c# asp.net vb.net .net-4.0

我正在尝试使用asp.net和C#导入excel文件。我在VB中找到了一个例子,但它使用了一个名为“Server.MapPath”的东西,它没有解析为命名空间。我在.NET 4.0,C#和Windows XP上。我找到了一个“HttpServerUtility.MapPath”,但我不知道这是否等同于IIS7?

C#

public OleDbCommand ExcelConnection()        
{                        
    string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("~/ExcelImport.xls") + ";" + "Extended Properties=Excel 8.0;";
    //create your excel connection object using the connection string
    OleDbConnection ocnct = new OleDbConnection(conStr);
    ocnct.Open();

    //use a SQL Select command to retrieve the data from the Excel Spreadsheet
    //the "table name" is the name of the worksheet within the spreadsheet
    //in this case, the worksheet name is "Members" and is coded as: [Members$]
    OleDbCommand ocmd = new OleDbCommand("SELECT * FROM [Members$]", ocnct);
    return ocmd;
}

Online示例

受保护的函数ExcelConnection()作为OleDbCommand

' Connect to the Excel Spreadsheet
Dim xConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Server.MapPath("~/ExcelImport.xls") & ";" & _
            "Extended Properties=Excel 8.0;"

' create your excel connection object using the connection string
Dim objXConn As New OleDbConnection(xConnStr)
objXConn.Open()

' use a SQL Select command to retrieve the data from the Excel Spreadsheet
' the "table name" is the name of the worksheet within the spreadsheet
' in this case, the worksheet name is "Members" and is coded as: [Members$]
Dim objCommand As New OleDbCommand("SELECT * FROM [Members$]", objXConn)
Return objCommand

结束功能

2 个答案:

答案 0 :(得分:1)

Server.MapPath获取应用程序相对路径(以~开头)并将其转换为磁盘上的完整路径。 它是Server对象(HttpServerUtility类的一个实例)的成员,可以在HttpContext以及页面或用户控件上找到。

如果您已经拥有磁盘上的完整路径,则不需要它。

答案 1 :(得分:1)

HttpContextPage类都有一个名为Server的属性,它返回HttpServerUtility个对象(事实上,Page只调用return this.Context.Server })。

因此Server.MapPath HttpServerUtility.MapPath

它需要一个字符串并计算它对应的文件路径,如果该字符串是由应用程序处理的URI与文件系统之间的开箱即用映射支持的相对URI(如果你已经它为你处理的复杂虚拟目录映射)添加了一个特性,如果你以波浪号~开头,那么它认为它是相对于应用程序根的。)

如果您在此过程中进行了一些重新映射,则它可能会失败,其值既不是相对于应用程序根目录(以~开头),也不是站点根目录(以/开头)如果你在路上做了一些重新映射,那可能不是你的担心。