如何压缩文件并提交文件

如何压缩文件并提交文件

我们在做有关数据表格的项目时经常会遇到要处理图片的情况,那么图片该如何获取,压缩和添加呢?

  • 上传图片

1、打开控件

我们上传文件是借助type=”file”的input标签来完成的,但它并不能和其它表单元素并存,所以我们要先让图片上传,再和其它表单一起提交保存。

    <div style="display: none">

        <form id="formEditorFile" action="/ManualImport/UpEeditorFile" method="post" enctype="multipart/form-data">

            <input type="file" name="imgFile" class="form-control"  onchange="funUpEeditorFile()" />

        </form>

</div>

在上面的代码中,

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

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

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

-Action:提交的路径

-Method:提交的方式

我们给input标签绑定一个onchange事件,当我们选择文件之后就会触发这个事件。

在这个onchange事件的操作是去提交这个form表单。

  1. 文件上传

在onchange事件里找到form表单,

        //提交文件

        function funUpEeditorFile()

        {

//ajaxSubmit()直接提交form表单,提交的实际就是我们选择的图片文件

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

                if (rtMsg.State) {

                    var strContent = $("#textContent").html();

                    strContent += rtMsg.Text;

                    //更新内容框

                    $("#textContent").html(strContent);

                } else {

                    layer.alert(rtMsg.Text);

                }

            })

        }

选择完提交文件后,我们需要在指定在控制器中对图片进行处理。

//imgFile 接收传过来的图片

  public ActionResult UpEeditorFile(HttpPostedFileBase imgFile)

        {

            ReturnJson returnJson = new ReturnJson();

            try

            {

                if (imgFile != null)

                {

                    //获取文件后缀

                    string fileExtension = Path.GetExtension(imgFile.FileName);

                    fileExtension = fileExtension.ToLower();//全部转换成小写

                    //判断是否未图片文件

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

                    {

                        //判断是否存在需要的目录,不存在则创建

                        //临时保存上传的图片的文件夹

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

                        {

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

                        }

                         //最终保存上传图片的文件夹

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

                        {

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

                        }

                        //文件名

                        string fileName = DateTime.Now.ToString("yyyy-MM-dd") + Guid.NewGuid() + fileExtension;

                        //拼接文件的保存路径

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

                        //保存文件

                        imgFile.SaveAs(filePath);

                        string imgHtml = "<img οnlοad=\"AutoResizeImage(200,150,this)\" src=\"/Document/Title/Temp/" + fileName+"\" />";

//onload事件里面绑定了压缩图片的方法,这里设置的图片压缩后最大的宽度为200,最大高度150,this指的是当前的这张图片

                        returnJson.State = true;

                        returnJson.Text = imgHtml;

                    }

                    else

                    {

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

                    }

                }

                else 

                {

                    returnJson.Text = "文件为空!";

                }

            }

            catch (Exception e)

            {

                returnJson.Text = "数据异常";

            }

            return Json(returnJson, JsonRequestBehavior.AllowGet);

        }

二、压缩图片

我们做项目时经常会考虑到文本框的大小,所以需要对图片进行压缩,让它呈现出来的效果更好一点。

        /*

        图片大小压缩

        param {} maxWidth

        param {} maxHeight

        param {} objImg

        returns {}

        */

maxWidth:压缩后的最大宽度

maxHeight:压缩后的最大宽度

objImg:这张图片

        //1.7图片压缩

        function AutoResizeImage(maxWidth, maxHeight, objImg) {

            //var img = new Image();

            //img.src = objImg.src;

            var hRatio;//最大高度和这张图片的比例

            var wRatio;//最大宽度和这张图片的比例

            var Ratio = 1;//原始值,表示不压缩

            var w = objImg.width;//原始宽度

            var h = objImg.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;

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值