C# 使用AjaxFileUpload控件在上载完成后从临时路径检索文件

C# 使用AjaxFileUpload控件在上载完成后从临时路径检索文件,c#,asp.net,ajax,file,file-upload,C#,Asp.net,Ajax,File,File Upload,我正在asp.net页面上使用AjaxFileUpload上载文件。我想从服务器上的临时路径检索上载的文件。我可以使用文档中提到的path.GetTempPath()获取控件存储数据的临时路径 但是我面临的问题是Ajax文件上传将文档存储在以下文件夹结构中 Path.GetTempPath/_AjaxFileUpload/<GUID-looks like>/<actual file> Path.GetTempPath//\u AjaxFileUpload// 当我从浏

我正在asp.net页面上使用AjaxFileUpload上载文件。我想从服务器上的临时路径检索上载的文件。我可以使用文档中提到的
path.GetTempPath()
获取控件存储数据的临时路径

但是我面临的问题是Ajax文件上传将文档存储在以下文件夹结构中

Path.GetTempPath/_AjaxFileUpload/<GUID-looks like>/<actual file>
Path.GetTempPath//\u AjaxFileUpload//
当我从浏览器上的新选项卡(新web会话)使用控件时,GUID部分会更改

我无法找到有关如何获取此路径以检索文件的信息。
请建议是否有方法访问此文件夹结构,以便我可以从临时路径访问文件。

唯一的方法是将路径保存在
会话变量中或数据库中。所以这完全取决于你想如何使用这条路径

我使用会话在文件上传完成后存储路径,并在我想要确认更改时检索URL,但是如果在新会话的其他地方需要该路径,您可以将其存储到XML甚至DB之类的文件中,然后在其他地方使用它

以下是如何使用会话变量执行此操作的示例:

protected void fileUpload_UploadComplete(object sender, AjaxFileUploadEventArgs e)
{
    string path = Path.Combine(Path.GetTempPath(), "_AjaxFileUpload", e.FileId);

    //using session
    Session["FileDirectory"] = path;

    // you could also store this in db, xml or text file as well.

    // e.g. XML
    XDocument doc = new XDocument(
        new XElement("Root",
            new XElement("Child", path)
        )
    );
    doc.Save("Root.xml");
}
您可以在应用程序中的任何位置从声明的会话访问文件路径

额外信息 然后,您可以将文件URL作为参数传递,以便将文件保存在应用程序中的任何位置:

protected void btnSave_Click(object sender, EventArgs e)
{
     //get the file path from session, xml or db ..
     string filePath = Session["FileDirectory"].ToString();
     SaveFiles(filePath);
}

public void SaveFiles(string fileDirectory)
{
    //copy the file from temp serevr to the permanent folder
    File.Copy(fileDirectory, "your new path", false);

    //deletes the file from temp server
    Directory.Delete(fileDirectory, true);
}

我试着使用会话。虽然它们可以工作,但由于缺乏会话管理,我无法在我的特定情况下使用它们。我现在不确定细节,但我知道我不能使用会话:(正如我所说的,如果你不能使用会话,那么你可以将路径存储到数据库或XML文件中。我也用XML更新了答案。