zoukankan      html  css  js  c++  java
  • SERVER.MAPPATH

    主要总结Server.MapPath 这个方法的使用以及使用的场景,不是什么时候都适合使用;
    1、实现功能:
      Server.MapPath能够获取指定URL相对服务器的物理路径,在IIS服务端,能够根据文件名来获取该文件的物理路径;
    2、存在命令空间:
      System.Web.HttpContext.Current.Server.MapPath 以及System.web.MVC.Control.Server.Mapth;
    3、使用情况:
      既然是System.Web.HttpContent 也及时表明该方法只能放在Http.web中使用,非该环境系统会扔出一个错误;非web环境是什么意思那,举个例子,我们使用线程来处理某个业务逻辑的时候,这个时候你使用该方法,那必然报错,以为你已经脱离了web环境。所以视情况而定;获取虚拟目录的物理地址,该方法很有效果;
      随便补充一句,多线程编程的时候,一定要分清楚那些事线程能够获取的资源,那些事依赖其他环境获取的变量,比如IIS中多线程获取缓存数据,离开了HttpWeb这环境来获取IIS的缓存,必然是失败的,所以要分清楚多线程编程时候,使用的资源对象。线程安全对象集合:ConcurrentQueue、ConcurrentBag等
    4、需要注意事项:
        system.Web.HttpContext.Current.Server.MapPath("myPic") //也就是获取当前平级目录地址;
        system.Web.HttpContext.Current.Server.MapPath("../myPic") //也就是获取当前上级目录地址;
     
           使用的时候需要慎重;
    SaveAs 方法将使用 FileUpload 控件上载的文件的内容保存到 Web 服务器上的指定路径
    获取前端的页面上的文件
     HttpFileCollection files = HttpContext.Current.Request.Files;
    //原来以为这里的FILES只是file文件上传才能取得,后来经测试发现这里的files只要是页面上有的file文件(图片等等),都会当做request.files传过去
    private void SaveFile(string xxbh, string flowLsh, string basePath = "~/Upload/Attachment/")
            {
                var _result = "0";
                DAL.DALBase dal = new DAL.DALBase();
                var name = string.Empty;
                var saveName = Guid.NewGuid().ToString().Replace("-", "");
                basePath = (basePath.IndexOf("~") > -1) ? System.Web.HttpContext.Current.Server.MapPath(basePath) : basePath;
                HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
                basePath += xxbh + "/";
                if (!Directory.Exists(basePath))
                {
                    Directory.CreateDirectory(basePath);
                }
                dal.DB.BeginTransaction();
                try
                {
                    var _suffix = files[0].FileName.Substring(files[0].FileName.LastIndexOf("."));
                    var _temp = System.Web.HttpContext.Current.Request["name"];
                    if (!string.IsNullOrEmpty(_temp))
                    {
                        name = _temp;
                    }
                    else
                    {
                        Random rand = new Random(24 * (int)DateTime.Now.Ticks);
                        name = rand.Next() + "." + _suffix;
                    }
                    var full = basePath + saveName;
                    files[0].SaveAs(full);
                    //保存数据库
                    string sqlString = "insert into t_xxbb_attachment " +
                    "  (lsh, filename, filesuffix, filesize, ref_xxbh, scbz, sjc,ref_jgbh,ref_yhbh,ref_flow_lsh) " +
                    "values " +
                    "  ('" + saveName + "', '" + name + "', '" + _suffix + "', " + files[0].ContentLength + ", '" + xxbh +
                    "', 0, sysdate," + UI.ssjgbh + "," + UI.yhbh + ",'" + flowLsh + "')";
                    dal.DB.ExecuteNonQuery(sqlString);
                    dal.DB.CommitTransaction();
                    _result = "1";
                }
                catch (Exception ex)
                {
                    dal.DB.RollbackTransaction();
                    LogHelper.writelog("AttachmentUpload->SaveFile", ex);
                }
                System.Web.HttpContext.Current.Response.Write(_result);
            }

     
  • 相关阅读:
    面向对象编程——设计模式之一
    mysql死锁——mysql之四
    Mysql基本类型(字符串类型)——mysql之二
    Mysql基本类型(五种年日期时间类型)——mysql之二
    Mysql基础教程——mysql之一
    JVM启动参数手册——JVM之八
    Thinkphp 框架2
    Thinkphp 框架
    流程(下)
    流程(上)
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/10989492.html
Copyright © 2011-2022 走看看