加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 上传和查看文件ASP.NET MVC 5

发布时间:2020-12-15 03:47:01 所属栏目:百科 来源:网络整理
导读:我有这个代码: [HttpPost] public ActionResult Create(Knowledgebase KB,HttpPostedFileBase file) { var KBFilePath = ""; if (ModelState.IsValid) { if (file.ContentLength 0) { var fileName = Path.GetFileName(KB.KnowledgebaseTitle); var path =
我有这个代码:
[HttpPost]
    public ActionResult Create(Knowledgebase KB,HttpPostedFileBase file)
    {
        var KBFilePath = "";
        if (ModelState.IsValid)
        {
            if (file.ContentLength > 0)
            {
                var fileName = Path.GetFileName(KB.KnowledgebaseTitle);
                var path = Path.Combine(Server.MapPath("~/Resources/KBArticles"),fileName + ".pdf");
                KBFilePath = path;
                file.SaveAs(path);
            }
            KB.KnowledgebaseLink = KBFilePath;
            db.Knowledgebases.Add(KB);
            db.SaveChanges();
            return RedirectToAction("Index","Home");
        }

        else
        {
            return View();
        }

该链接是存储在DB中的文件路径,以C:/

在另一页上,我可以查看记录的内容.当我点击其保存在C:/上的链接时,Chrome表示“无法加载本地资源”.我正在保存到资源文件夹,这是我的ASP.NET应用程序目录的一部分.无论如何?

编辑
该页面从此视图提供:

public ActionResult Suggestions(String Tag)
{
      return View();
}

编辑2 – 我把看法改为:

@{
string tag = "<td><a href=" + "~/Content/Files/" + ">" + item.Title.Replace(" ","") + ".pdf" + "</a>" + "</td>";
 }
 @Html.Raw(tag)

浏览器地址栏中的请求文件是

http://localhost:62165/Incident/~/Content/Files/

现在我收到一个HTTP错误404.0未找到错误

解决方法

尝试将文件保存在“内容”文件夹中.您可以创建一个子文件夹Content / Files.把文件放在那里然后生成如下链接:

< a href =“?/ Content / Files / file1.pdf”> File1< / a>

或者如果要直接下载,请使用下载属性:

< a href =“?/ Content / Files / file1.pdf”download> File1< / a&gt ;. 大多数Web服务器被配置为拒绝对内容文件夹以外的内容的请求.这可以在配置文件中修改,但是如果您使用内容文件夹更容易(更安全).这是基于我的经验,如果有人认为我错了,请让我知道解决我的答案.我总是很高兴学习新的东西. 编辑1:如何动态构建标签 在视图中,您需要一个字符串变量链接,其中包含要显示的链接的文本和另一个可变路径(可能都从控制器中的db加载).那么您可以手动构建标签:

@{
    string tag = "<a href=" + path + ">" + link + "</a>";
}

@Html.Raw(tag)

编辑2:处理Url中的空格.

您需要使用Html.Content来获取正确的相对Url.

@{
    string link = item.Title;
    string path = Url.Content("~/Content/Files/") + link.Replace(" ","%20") + ".pdf";
    string tag = "<a href=" + path + ">" + link + "</a>";
}

@Html.Raw(tag)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读