六、图片上传

一、图片上传和文件上传

后台代码:

        //上传图片
        [HttpPost]
        public async Task<IActionResult> UploadImage([FromForm(Name = "file")] IFormFile file, string name, string password)
        {
            string url = string.Empty;
            try
            {
                DbContext db = new DbContext();

                Users user = db.Db.Queryable<Users>().Where(p => p.UserName == name).First();
                //T_AccountModel userAccount = db.Db.Context..FirstOrDefault(t => t.UserName == Account);
                if (user != null)
                {
                    return Json(new { State = false, Code = 0, Msg = "该用户名已被注册!", Time = DateTime.Now.ToString() });
                }
                //图片上传
                string date = DateTime.Now.ToString("yyyy-MM-dd");
                url = "/Upload/" + date + "/";
                string path = Path.Combine(Environment.CurrentDirectory, "Upload", date);
                if (!System.IO.Directory.Exists(path))//判断上传路径是否存在
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                string filePath = string.Empty;
                string fileName = string.Empty;
                if (file.Length > 0)
                {
                    //定义图片数组后缀格式
                    string[] LimitPictureType = { ".JPG", ".JPEG", ".GIF", ".PNG", ".BMP" };
                    string fileFormat = System.IO.Path.GetExtension(file.FileName).ToUpper();//获取文件后缀格式
                    if (LimitPictureType.Contains(fileFormat))
                    {
                        fileName = Guid.NewGuid().ToString("n") + fileFormat;
                        filePath = Path.Combine(path, fileName);//中间处理为唯一格式文件
                        url = url + fileName;
                        using (var stream = new FileStream(filePath, FileMode.Create))
                        {
                            try
                            {
                                //保存文件
                                await file.CopyToAsync(stream);
                            }
                            catch (Exception ex)
                            {
                                return Json(new { State = false, data = new { src = url }, Code = 0, Msg = "文件保存失败!", Time = DateTime.Now.ToString() });
                            }
                        }
                    }
                    else
                    {
                        return Json(new { State = false, Code = 0, Msg = "请上传指定格式的图片!", Time = DateTime.Now.ToString() });
                    }
                }

                //
            }
            catch (Exception e)
            {
                Trace.WriteLine("异常:" + e);
            }
            return Json(new { State = false, Code = 0, data = new { src = url }, Msg = "图片上传成功!", Time = DateTime.Now.ToString() });
        }

        //上传文件
        [HttpPost]
        public async Task<IActionResult> UploadFile([FromForm(Name = "file")] IFormFile file, string name, string password)
        {
            string url = string.Empty;
            try
            {
                DbContext db = new DbContext();

                Users user = db.Db.Queryable<Users>().Where(p => p.UserName == name).First();
                //T_AccountModel userAccount = db.Db.Context..FirstOrDefault(t => t.UserName == Account);
                if (user != null)
                {
                    return Json(new { State = false, Code = 0, Msg = "该用户名已被注册!", Time = DateTime.Now.ToString() });
                }
                //文件上传
                string date = DateTime.Now.ToString("yyyy-MM-dd");
                url = "/Upload/" + date + "/";
                string path = Path.Combine(Environment.CurrentDirectory, "Upload", date);
                if (!System.IO.Directory.Exists(path))//判断上传路径是否存在
                {
                    System.IO.Directory.CreateDirectory(path);
                }
                string filePath = string.Empty;
                string fileName = string.Empty;
                if (file.Length > 0)
                {
                    string fileFormat = System.IO.Path.GetExtension(file.FileName).ToUpper();//获取文件后缀格式
                    fileName = Guid.NewGuid().ToString("n") + fileFormat;
                    filePath = Path.Combine(path, fileName);//中间处理为唯一格式文件
                    url = url + fileName;
                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        try
                        {
                            //保存文件
                            await file.CopyToAsync(stream);
                        }
                        catch (Exception ex)
                        {
                            return Json(new { State = false, data = new { src = url }, Code = 0, Msg = "文件保存失败!", Time = DateTime.Now.ToString() });
                        }
                    }

                }
                //
            }
            catch (Exception e)
            {
                Trace.WriteLine("异常:" + e);
            }
            return Json(new { State = false, Code = 0, data = new { src = url,name= file.FileName}, Msg = "图片上传成功!", Time = DateTime.Now.ToString() });
        }

前台代码

                    //上传图片接口(返回的数据格式见下文),若不开启图片上传,剔除该项即可
                    uploadImage: {
                        url: ‘/LayIM/UploadImage‘, //接口地址
                        type: ‘post‘ //默认post
                    },
                    //上传文件接口(返回的数据格式见下文),若不开启文件上传,剔除该项即可
                    uploadFile: {
                        url: ‘/LayIM/UploadFile‘, //接口地址
                        type: ‘post‘ //默认post
                    },
                    //扩展工具栏,下文会做进一步介绍(如果无需扩展,剔除该项即可)
                    tool: [{
                        alias: ‘code‘, //工具别名
                        title: ‘代码‘, //工具名称
                        icon: ‘‘ //工具图标,参考图标文档
                    }],

监听工具栏

                //监听自定义工具栏点击,以添加代码为例
                layim.on(‘tool(code)‘, function (insert, send, obj) { //事件中的tool为固定字符,而code则为过滤器,对应的是工具别名(alias)
                    layer.prompt({
                        title: ‘插入代码‘
                        , formType: 2
                        , shade: 0
                    }, function (text, index) {
                        layer.close(index);
                        insert(‘[pre class=layui-code]‘ + text + ‘[/pre]‘); //将内容插入到编辑器,主要由insert完成
                        //send(); //自动发送
                    });
                    console.log(this); //获取当前工具的DOM对象
                    console.log(obj); //获得当前会话窗口的DOM对象、基础信息
                });
                //ready内结束

原文地址:https://www.cnblogs.com/fger/p/11834064.html

时间: 2024-11-18 03:45:43

六、图片上传的相关文章

数往知来 JQuery 图片上传_水印 &lt;二十二&gt;

一.图片上传  :enctype='multipart/form-date 首先在进行文件上传时,添加form表单中的enctype属性指定enctype='multipart/form-date', 文件数据发送给服务端,并不是把文件路径发送给服务端了,它会随机生成一个分割字符串, 把每一个表单元素分割开 <form method='post' action='' enctype='multipart/form-date'> //这里的enctype是提交请求报文的报文体的一种编码格式, 默

Android开发中使用七牛云存储进行图片上传下载

Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储原理,上面这幅图片是官方给出的原理图,表述当然比较清晰了.可以看出,要进行图片上传的话可以分为五大步: 1. 客户端用户登录到APP的账号系统里面: 2. 客户端上传文件之前,需要向业务服务器申请七牛的上传凭证,这个凭证由业务服务器使用七牛提供的服务端SDK生成: 3. 客户端使用七牛提供的客户端S

详细阐述Web开发中的图片上传问题

Web开发中,图片上传是一种极其常见的功能.但是呢,每次做上传,都花费了不少时间. 一个"小功能"花费我这么多时间,真心不愉快. So,要得认真分析下原因. 1.在最初学习Java Web开发的时候,经验不足,属于能力问题,比如对技术认识不到位. 2.图片上传是一类问题,而不是一个问题.   比如,大家都会做饭,但每个人自己做饭是有不同的.做了一个人吃.一家人吃.喜事待客做好几桌,是不同的问题.   同样的,图片上传,是上传一张还是多张,前端的用户体验如何,后端逻辑处理是否正确,图片存

调用相机,选择图片上传,带预览功能、图片压缩、相机文字设置、

摘要 iOS调用相机,iOS调用相册,保存至应用程序沙盒,高保真压缩图片,并有点击放大预览,再次点击缩回至原大小,带动画效果,附源码下载地址. Xcode版本4.5.1 类库ios6.0 IOS调用相机 图片预览 图片上传 压缩图片 模拟器添加图片 目录[-] 判断是否支持相机,跳转到相机或相册界面 七.保存图片 高保真压缩图片方法 八.实现点击图片预览功能,滑动放大缩小,带动画 ps:模拟器添加图片 源码下载地址: 一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate ? 1

从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文本web编辑器,而且全中文API和注释,方便学习和使用.特别是图片上传查看及涂鸦功能极为喜欢,但是有很多情况我们并不需要Web编辑器,而只需要图片上传.那么问题来了,提取图片上传哪家强..... 网上有很多图片上传的控件.插件.但都不是那么的完美,有的只有一张图片上传不包含批量上传,有的没有图片查看

SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器

一.参数的传递 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Helvetica } 1.简单的参数传递 1 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ 2 * value:传入的参数名,required:是否必填,defaultValue:默认值 3 * } 4 */ 5 @RequestMapping("itemEdit") 6 public ModelAndView itemEdit(@R

SpringMVC+Spring+MyBatis 整合与图片上传简单示例

一.思路: (一) Dao层: 1. SqlMapConfig.xml,空文件即可.需要文件头.2. applicationContext_dao.xml. a) 数据库连接池b) SqlSessionFactory对象,需要spring和mybatis整合包下的.c) 配置mapper文件扫描器. (二)Service层: 1.applicationContext_service.xml包扫描器,扫描@service注解的类.2.applicationContext_trans.xml配置事务

Spring Boot+BootStrap fileInput 多图片上传

一.依赖文件 <link rel="stylesheet" type="text/css" th:href="@{/js/bootstrap/css/bootstrap.css}"> <link rel="stylesheet" type="text/css" th:href="@{/js/bootstrap/fileinput/css/fileinput.css}"&

分布式系统图片上传方案

思路分析 直接将图片上传到一个指定的目录,访问.下载图片都访问这个目录. 由于项目最终是要部署到Linux环境,所以直接将图片上传到Linux服务器. 问题:那如何将图片上传到Linux呢? 答:使用vsftpd组件,实现文件传输. vsftpd简介 问题1:vsftpd是什么? 答:ftp(File Transfer Protocol)文件传输协议.(实现不同操作系统之间文件的传输) vsftpd是一个基于ftp协议的文件传输服务器软件. 问题2:vsftpd作用是什么? 答:传输文件.(跨平