zoukankan      html  css  js  c++  java
  • Bootstrap +mvc实现网络共享文件查阅(应用于企业ISO等共享文件呈现)

    选择MVC因为为当前主流框架,bootstap为了任何客户端浏览网页都可以自适应

    以上两个框架均为本人第一次使用,因此记录下来,希望可以帮助到有同样需求的人

    要求如果是PDF文件直接网页打开,如果是别的文件可以下载或者打开

    在Models 建立基类

          public string Path { get; set; }//路径
            public string TitleC { get; set; }//文件夹中文名
            public string menu { get; set; }//菜单名 为了显示在台头

             public List<string> Dict { get; set; } //存放目录
            public List<string> Files { get; set; }//存放文件

     public ActionResult Index(string fn, string titleC,string menu)      

       {

                if (string.IsNullOrEmpty(fn)) fn = Server.MapPath("~/Application Forms (体系文件)/Forms/ISO 受控表格");  

               if (string.IsNullOrEmpty(titleC)) titleC = "公司ISO受控表单";           

               if (string.IsNullOrEmpty(menu)) menu = Server.MapPath("~/Application Forms (体系文件)/Forms/ISO 受控表格");           

                var dict = new List<string>();            

                 var files = new List<string>();            

                  foreach (var obj in subs)            

                  {                

                      if (Directory.Exists(obj))                

                      {                   

                             dict.Add(obj);                 }              

           else                 {                     files.Add(obj);                                  }                

                    var m = new ViewManageIndexViewModel        //返回到客户端    

                    {                 Dict = dict,                 Files = files,                 Path = fn,                 TitleC = titleC,                 menu=menu                                          };             return View(m);         }       

    这样可以基本实现指定路径下读取文件和文件夹呈现在客户端

    下面为客户端代码以下为bootstrap 的响应式菜单当到手机上会自动自适应效果见下图

    <nav class="navbar navbar-inverse" role="navigation">
          <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              <a class="navbar-brand" href="#"></a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <ul class="nav navbar-nav">
                 <li><a href="" >HOME</a></li> 
                    <li class="dropdown" style=""> 
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">FORMS <b class="caret"></b></a> 
                    <ul class="dropdown-menu" role="menu"> 
                       <li>@Html.ActionLink("ISO 受控表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/ISO 受控表格"),menu=Server.MapPath("~/Application Forms (体系文件)/FORMS/ISO 受控表格"), titleC = "公司ISO 受控表单" })</li> 
                       <li>@Html.ActionLink("EHS 受控表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/EHS 受控表格"), menu = Server.MapPath("~/Application Forms (体系文件)/FORMS/EHS 受控表格"), titleC = "公司EHS 受控表格" })</li> 
                       <li>@Html.ActionLink("其他表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/其他表格"), menu = Server.MapPath("~/Application Forms (体系文件)/FORMS/其他表格"), titleC = "公司其他表格" })</li> 
                    </ul> 
                    </li>
                        <li class="dropdown"> 
                            <a href="#" class="dropdown-toggle" data-toggle="dropdown">POLICIES <b class="caret"></b></a> 
                            <ul class="dropdown-menu"> 
                                <li><a href="#">HR POLICIES</a></li> 
                                <li><a href="#">GA POLICIES</a></li> 
                                <li><a href="#">IT POLICIES</a></li> 
                            </ul> 
                        </li>       
              </ul>
            </div><!-- /.navbar-collapse -->
          </div><!-- /.container-fluid -->
     
    </nav>

    文件的呈现才有bootstrap的table class="table table-bordered" 可以在窗口变小的时候自动生成滚动条效果见下图

     <table class="table table-bordered">
              
               <thead>
                  <tr>
                     <th>文件名</th>
                     <th>修改时间</th>
                     <th>操作</th>
                  </tr>
               </thead>
               <tbody>
      
                @foreach (var d in Model.Files)
                {
                    if ((@File.GetAttributes(d) & FileAttributes.Hidden) != FileAttributes.Hidden)
                    {
                          <tr>
                             <td> @Path.GetFileNameWithoutExtension(d)</td>
                             <td> @String.Format("{0:yyyy-MM-dd}", @File.GetLastWriteTime(d))</td>
                            @* <td> @System.Diagnostics.FileVersionInfo.GetVersionInfo(d).FileVersion
                              </td>*@
                              @if(@Path.GetExtension(d)==".pdf")
                              {
                                 
                                  <td>  @Html.ActionLink("表单申请流程", "openfile", new { path = Path.Combine(Model.Path, "流程"), fileName = Path.GetFileName(d).Substring(0, 11) + ".pdf" })&nbsp;&nbsp;&nbsp;
                                  @Html.ActionLink("查看文件", "openfile", new { path = Model.Path, fileName = Path.GetFileName(d) })</td>
                              }
                              else
                              {
                                 <td> @Html.ActionLink("查看文件/下载文件", "GetFileFromDisk", new { path = Model.Path, fileName = Path.GetFileName(d) })</td>
                              }
                          </tr>
                    }
                }
       
               </tbody>
           </table>

    当点击查看文件时调用的方法是

    public FilePathResult GetFileFromDisk(string path, string fileName)
            {
             
               
                return File(path + "\" + fileName, "application/zip-x-compressed", fileName);
               
            }

    这个时候点击以后会下显示器下方显示

    我不想出现下载的按钮只想在线打开所以改写如下 

    Response.ContentType = "Application/pdf";
                   // string fileName = inFilePath.Substring(inFilePath.LastIndexOf('\') + 1);
                    Response.AddHeader("content-disposition", "filename=" + filename);
                    Response.WriteFile(path + "\" + filename);
                    Response.End();

    以上基本完成所要功能

  • 相关阅读:
    vue开发常用技巧总结(一)
    js时间戳转固定日期格式输出处理
    vue恢复初始数据
    Feature Police导致iframe页面无法使用粘贴功能
    页面异步请求canceled 或 network中接口请求成功但无法查看返回值
    我在阿里云做云开发平台
    Python项目中的requirements文件
    Json常用格式
    浅谈开机启动_windows
    mmdetection 报错: AttributeError: ‘ConfigDict‘ object has no attribute ‘pipeline‘
  • 原文地址:https://www.cnblogs.com/xiayan/p/4210202.html
Copyright © 2011-2022 走看看