0
点赞
收藏
分享

微信扫一扫

添加文件,选择需要上传的图片文件

kiliwalk 2022-02-27 阅读 102

编写项目时,在新增数据的时候,有一些地方会要求我们上传图片,通过图片来使我们所要上传的数据更加完善。下文就对图片上传进行讲解。

本文使用的开发工具是 :Visual Studio 2019

主要的开发语言有 :C# ,  javajscript , jquery

使用的框架 :layui

在讲解之前,我们先把样式写好,一个按钮和一个form表单。

 <button class="btn btn-outline-primary" onclick="openUpEeditorFile()">添加图片</button>

<div id="textContent" class="file" contenteditable="true"></div>

@*文件上传表单*@

    <div style="display: none">

        <form id="formEditorFile"

              action="/ExamQuesManagement/ManualImport/UpEeditorFile"//连接控制器的链接

              method="post" enctype="multipart/form-data">

            <!--enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。-->

            <!--multipart/form-data 不对字符编码。-->

            <!--在使用包含文件上传控件的表单时,必须使用该值。-->

            <input type="file" name="file" class="form-control"

                   onchange="funUpEeditorFile()" />

        </form>

</div>

样式如下:

写完样式后,我们给按钮添加一个点击事件。

//1.0 添加文件 选择需要图片文件

        function openUpEeditorFile() {

            $("#formEditorFile input[type='file']").click();

        }

//1.1提交表单数据 图片文件

        function funUpEeditorFile() {

            //文件上传表单formEditorFile中input[type=file]的onchange事件

            $("#formEditorFile").ajaxSubmit(function (data) {

                //ajaxSubmit form表单提交的插件

                if (data.State) {//

                    var str = $("#textContent").html();//获取textContent的HTML

                    str += data.Text;//

                    $("#textContent").html(str)

                } else {

                    layer.msg(data.Text, { icon: 0, skin: "layui-layer-molv" });

                }

            });

        }

当点击添加图片时,打开文件夹,选择图片:

写完什么步奏后发现图片还没有显示,这时我们要对图片进行压缩,压缩后的图片才能显示。

//1.2图片压缩

        function AutoResizeImage(maxWidth, maxHeight, objImg) {

            var img = new Image();

            img.src = objImg.src;

            var hRatio;

            var wRatio;

            var Ratio = 1;

            var w = img.width;

            var h = img.height;

            wRatio = maxWidth / w;

            hRatio = maxHeight / h;

            if (maxWidth == 0 && maxHeight == 0) {

                Ratio = 1;

            } else if (maxWidth == 0) {//

                if (hRatio < 1) Ratio = hRatio;

            } else if (maxHeight == 0) {

                if (wRatio < 1) Ratio = wRatio;

            } else if (wRatio < 1 || hRatio < 1) {

                Ratio = (wRatio <= hRatio ? wRatio : hRatio);

            }

            if (Ratio < 1) {

                w = w * Ratio;

                h = h * Ratio;

            }

            objImg.height = h;

            objImg.width = w;

        }

压缩完图片后,打开页面点击添加图片,发现它报了一个错误。

404是什么意思呢?

答:404 (未找到) 服务器找不到请求的网页。(路径错误)

当我们打开文件点击图片时,图片的路径找不到,就报了404的错误。

这时,我们需要在控制器里面编写一部分代码,用来放置图片。

public ActionResult UpEeditorFile(HttpPostedFileBase file)

        {

            ReturnJson msg = new ReturnJson();

            msg.State = false;

            try

            {

                //判断文件是否为空

                if (file != null)

                {

                    #region 获取文件类型 设置文件名称 检查文件目录是否存在

                    //获取文件类型

                    string fileExtension = System.IO.Path.GetExtension(file.FileName);

                    //创建文件的名称

                    string fileName = DateTime.Now.ToString("yyyy-MM-dd")

                       //表示全局唯一标识符 (GUID)

                       + Guid.NewGuid() + fileExtension;

                    //检查目录是否存在,不存在就创建

                    if (!Directory.Exists(Server.MapPath("~/Document/Title/Temp/")))

                    {//创建目录/Document/Notice/

                        Directory.CreateDirectory(Server.MapPath("~/Document/Title/Temp/"));

                    }

                    if (!Directory.Exists(Server.MapPath("~/Document/Title/Images/")))

                    {//创建目录/Document/Notice/

                        Directory.CreateDirectory(Server.MapPath("~/Document/Title/Images/"));

                    }

                    #endregion

                    //保存文件的路径

                    string filePath = Server.MapPath("~/Document/Title/Temp/") + fileName;

                    #region 若扩展名不为空则判断文件是否是指定图片类型 ,然后返回img

                    if (fileExtension != null)

                    {

                        fileExtension = fileExtension.ToLower();//转小写字母

                        if ("(.gif)|(.jpg)|(.bmp)|(.jpeg)|(.png)".Contains(fileExtension))

                        {

                            //保存文件

                            file.SaveAs(filePath);//将文件保存到指定路径

                            string str = "<img οnlοad=\"AutoResizeImage(200,200,this)\" "

                              + "src=\"/Document/Title/Temp/" + fileName + "\" />";

                            msg.State = true;

                            msg.Text = str;

                        }

                        else

                        {

                            msg.Text = "只支持上传图片文件(gif,jpg,bmp,jpeg,png)";

                        }

                    }

                    #endregion

                }

                else

                {

                    msg.Text = "上传的文件为空!";

                }

            }

            catch (Exception e)

            {

                msg.Text = "上传异常!";

            }

            return Json(msg, JsonRequestBehavior.AllowGet);

        }

上面代码并不是复制粘贴就可以了,保存图片的路径是把图片放置在创建好的文件里面,如下图。

代码中的 ReturnJson 是一个类名,用来调用所需要的属性。

写完以上步奏后,点击添加图片,效果如下:

图片上传就讲到这,如有问题可在评论区里留言。 谢谢观看 @^_^@ 。

举报

相关推荐

0 条评论