• 首页
  • 博客
  • 视频
  • 资源
  • 问答
  • 猿趣
  • 手机
  • 关于
收藏
便签
笔记
消息
创作
登录
剑轩
故如虹,知恩;故如月,知明
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
CSS 15篇
微服务 41篇
Git 15篇
.NET 103篇
移动开发 33篇
软件架构 23篇
.NET Core 119篇
.NET MVC 11篇
英语 3篇
随笔 87篇
Bootstrap 3篇
Redis 21篇
编辑器 10篇
Js相关 15篇
虚拟化 8篇
更多
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
关于我们
ICP备案 : 渝ICP备18016597号-1
网站信息: 2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群
欢迎加群交流技术

.net core上传图片,文件。webapi 上传图片文件

11018人阅读 2019/3/30 11:51 总访问:4065438 评论:0 收藏:0 手机
分类: .NET Core

上传图片的前台代码都完全一样,直接来贴后台的代码吧

 public ActionResult UploadImage(List<IFormFile> upfile)
        {

            //Request.Form.Files["file"]也可以通过这样的方式获取文件
            if (upfile == null)
            {
                return new ContentResult { ContentType = "application/json;charset=UTF-8", Content = "文件资源为空" };
            }

            //获取静态资源文件根目录
            string webRootPath = _hostingEnvironment.WebRootPath;

            foreach (var formFile in upfile)
            {
                if (formFile.Length > 0)
                {

                    string fileExt = formFile.FileName.Substring(formFile.FileName.LastIndexOf('.')); //文件扩展名
                    long fileSize = formFile.Length; //获得文件大小,以字节为单位

                    if (fileSize > 1024 * 1024 * 2) //2M
                    {
                        //上传的文件不能大于2M
                    }

                    string newFileName = System.Guid.NewGuid().ToString("N") + fileExt; //随机生成新的文件名
                    var filePath = webRootPath + "/arcimg/" + newFileName;//上传文件的完整目录
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        formFile.CopyTo(stream);
                        stream.Flush();
                    }
                }
            }

            return new ContentResult { ContentType = "application/json;charset=UTF-8", Content = "上传图片成功" };
        }

这里有个net core中获取项目根目录的物理路径问题:

具体可以参考:

http://www.tnblog.net/aojiancc2/article/details/2347


说一下两点注意:

1:net core中没有saveas,所有不能使用saveas这个方法来上传图片

     而是通过一个文件流来上传,最重要的就是formFile.CopyTo(stream)了;


2:upfile这个就是对应前台文件选择框的name


3:  图片存放的地址,不要随便新建一个文件夹去存储,那样是访问不到的!!!!,应该放到那个wwwroot

     文件夹里边去,那个是官方推荐的存储静态资源的位置,例如js,css,图片等文件

     所以可以在哪里去创建一个文件夹

     


.net core webapi 上传图片文件基本也差不多,前端一般使用vue类似的技术栈
测试代码如下:

/// <summary>
///  上传多个文件
/// </summary>
/// <param name="Files"></param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public string Post(IFormCollection Files)
{
    try
    {
        string dd = Files["File"];
        var form = Files;//定义接收类型的参数
        Hashtable hash = new Hashtable();
        IFormFileCollection cols = Request.Form.Files;
        if (cols == null || cols.Count == 0)
        {
            return "没有上传文件";
        }
        foreach (IFormFile file in cols)
        {
            //定义图片数组后缀格式
            string[] LimitPictureType = { ".JPG", ".JPEG", ".GIF", ".PNG", ".BMP" };
            //获取图片后缀是否存在数组中
            string currentPictureExtension = Path.GetExtension(file.FileName).ToUpper();
            if (LimitPictureType.Contains(currentPictureExtension))
            {
                //这里暂时不重新生成文件名称,图片重命名使用guid或者时间都可以
                // var new_path = DateTime.Now.ToString("yyyyMMdd")+ file.FileName;
                var new_path = Path.Combine("uploads/images/", file.FileName);
                var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", new_path);
                //这步之前最好做一下文件夹是否存在的判断,如果不存在就创建一下
                using (var stream = new FileStream(path, FileMode.Create))
                {
                    file.CopyTo(stream);
                    stream.Flush();
                }
            }
            else
            {
                return "请上传指定格式的图片";
            }
        }
        return "上传成功";
    }
    catch (Exception ex)
    {
        return "上传失败";
    }
}




欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

👈{{preArticle.title}}
👉{{nextArticle.title}}
评价

{{titleitem}} {{titleitem}}

{{item.content}}

{{titleitem}} {{titleitem}}

{{item.content}}

聚圣源校讯通专业门户平台酥鱼加盟交换:朋友的妻子古文起名的张姓起名大全电缆厂起名大全什么是维和部队起名网免费取名生辰八字打分在八零年代当绿茶长嫂奢侈品牌标志2020年金鼠女宝宝起名海南人力cqsq豆捞樊起名字男起名泽后面加什么字瓦尔莎拉五行属火的字女孩起名风烟望五津长歌行在线观看88年生肖龙起名给姓贾的女孩起名字吗现代名图无法起动10016是什么电话昕和欣哪个起名好邻里的人们元子起名字重生之全球首富湖北经视直播电视剧天若有情淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化