zoukankan      html  css  js  c++  java
  • .net core图片上传详解

    首先有一点先确认下.net core 不存在Server.MapPath这个方法所以想引用服务器根目录或者web根目录应该在controller中引入IWebHostEnvironment对象

     private readonly IWebHostEnvironment _hostingEnvironment;
            public AdvertisementsController(IWebHostEnvironment hostingEnvironment) {
                _hostingEnvironment = hostingEnvironment;
            }
    

      

    /// <summary>
            /// 上传图片
            /// </summary>
            /// <returns></returns>
            public async Task<ActionResult> Upload()
            {
                try
                {
                    IFormFileCollection files = Request.Form.Files;
                    
                    var file = files[0];
                    //获取文件名后缀
                    string extName = Path.GetExtension(file.FileName).ToLower();
                    //获取保存目录的物理路径
                    if (System.IO.Directory.Exists(_hostingEnvironment.WebRootPath + "/upload/") == false)//如果不存在就创建images文件夹
                    {
                        System.IO.Directory.CreateDirectory(_hostingEnvironment.WebRootPath + "/upload/");
                    }
                    string path = _hostingEnvironment.WebRootPath + "/upload/"; //path为某个文件夹的绝对路径,不要直接保存到数据库
                                                              //    string path = "F:\TgeoSmart\Image\";
                                                              //生成新文件的名称,guid保证某一时刻内图片名唯一(文件不会被覆盖)
                    string fileNewName = Guid.NewGuid().ToString();
                    string ImageUrl = path + fileNewName + extName;
                    //SaveAs将文件保存到指定文件夹中
                    using (var stream = new FileStream(ImageUrl, FileMode.Create))
                    {
    
                        await file.CopyToAsync(stream);
                    }
                    
                    //此路径为相对路径,只有把相对路径保存到数据库中图片才能正确显示(不加~为相对路径)
                    string url = "\upload\" + fileNewName + extName;
                    return Json(new
                    {
                        Result = true,
                        Data = url
                    });
                }
                catch (Exception exception)
                {
                    return Json(new
                    {
                        Result = false,
                        exception.Message
                    });
                }
            }
    

      

  • 相关阅读:
    程序员职业规划
    SSH框架优缺点
    Servlet的生命周期,并说出Servlet和CGI的区别,Servlet与JSP的区别
    什么是J2EE,包括哪些规范!
    JS中定义类的方法
    audio.js – 随时随地,播放 HTML5 的声音
    jquery面试题里 缓存问题如何解决?
    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复
    JAVA排序算法
    java面试题中常见的关于String类问题总结
  • 原文地址:https://www.cnblogs.com/AndyLin/p/13396581.html
Copyright © 2011-2022 走看看