如何在服务器映射方法中给出绝对路径?

时间:2016-09-22 05:53:21

标签: c# asp.net

我有一个包含多个PDF文件的文件夹,插入和查看所有这些pdf都不是2种方法。我必须移动此文件夹以将此文件夹放在项目文件之外。因此,我必须使用绝对路径。我在互联网上试过一些coeds,但没有一个能为我工作。

以下代码位于按钮clcik事件

Event.includes(:votes).where.not(:votes => {:id => current_user}).references(:votes).count ==> 80

if else语句中还有其他部分,但我没有添加这些代码。

4 个答案:

答案 0 :(得分:2)

Server.MapPath方法仅适用于属于Web应用程序结构的相对路径。如果您需要提供位于外部的PDF文件,则可能需要一些端点来读取服务器上的文件内容并将其流式传输到客户端。

例如:

string pdfPath = @"D:\competion\pdfFolder\myfile.pdf";
this.Response.ContentType = "application/pdf";
this.Response.TransmitFile(pdfPath);
this.Response.End();

答案 1 :(得分:1)

我创建了一个没有'testVirPath'文件夹的测试项目。

在我的iis中,我添加了一个指向不同驱动器(不同于我的项目或已发布的驱动器)上的文件夹(testVirPath)的虚拟目录。 我在localhost上添加了必要的权限和与我发布的站点相同的用户。

然后我将一些pdf文件添加到testVirPath文件夹并将项目发布到iis。 试试吧。 这将列出存储在testVirPath文件夹中的pdf文件。

[家庭控制器]

    public ActionResult Files()
    {
        ViewBag.TheFiles = GetFiles(Server.MapPath("/testVirPath/"));
        return View();
    }

    private FileInfo[] GetFiles(string path)
    {
        DirectoryInfo di = new DirectoryInfo(path);
        FileInfo[] files = di.GetFiles();

        return files;
    }

[文件视图]

<div>
    @foreach (FileInfo f in @ViewBag.TheFiles)
    {
        <p>@f.FullName</p>
    }
</div>

答案 2 :(得分:0)

string directoryPath = Server.MapPath("~/competion/pdfFolder/");

试试这个!!

答案 3 :(得分:-1)

请使用这些代码进行pdf上传。

if(fuDoc.HasFile)         {

        string ext = "";
        string fnm = Path.GetFileName(fuDoc.PostedFile.FileName).ToLower();
        ext = Path.GetExtension(fuDoc.PostedFile.FileName).ToLower();
        if ((ext != ".doc") & (ext != ".pdf") & (ext != ".docx"))
        {
            Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Please select .doc or .pdf or .docx  files only');", true);
            fuDoc.Focus();
            return;
        }

        fuDoc.PostedFile.SaveAs(Server.MapPath("~/Upload/Documents/") + fuDoc.FileName);
        strDoc = "Upload/Documents/" + fuDoc.FileName;


    }