zoukankan      html  css  js  c++  java
  • Bootstrap Summernote 图片上传服务器

    1、前台需要引入官方库

    <link href="/Content/bootstrap.css" rel="stylesheet" />
    <link href="/Scripts/Plugin/bootstrap-summernote/summernote.css" rel="stylesheet" />
    <script src="/Scripts/Plugin/bootstrap-summernote/summernote.min.js"></script>
    <script src="/Scripts/Plugin/bootstrap-summernote/lang/summernote-zh-CN.min.js"></script>
    

    2、定义控件

    <div id="divContent"></div>
    

    3、js初始化时设置上传服务器

        $('#divContent').summernote({
            height: 300,
            minHeight: null,
            maxHeight: 500,
            callbacks: {
                onImageUpload: function (files) {
                    
                    var formData = new FormData();
                    formData.append('file', files[0]);
                    
                    $.ajax({
                        url: 'UploadManage.ashx?action=Upload',
                        type: "POST",
                        data: formData,
                        dataType: 'JSON',
                        processData: false,//告诉jQuery不要加工数据
                        contentType: false,
                        success: function (data) {
                            if (data.Result == 1) {
                                $('#divContent').summernote('insertImage', data.Data, 'img');
                            } else {
                                alert(data.Data);
                            }
                        },
                        error: function (data) {
                            alert(data);
                        }
                    });
                }
            }
        });
    

    4、UploadManage.ashx文件,用于服务端接收files内容上传保存

    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    using WebCore;
    using WebCore.Entitys;
    using WebProcess.Adapter;
    using WebProcess.common;
    
    namespace Service
    {
        /// <summary>
        /// UploadManage 的摘要说明
        /// </summary>
        public class UploadManage : IHttpHandler
        {
            ProcessResult result = new ProcessResult();
    
            public void ProcessRequest(HttpContext context)
            {
                string action = context.Request["action"] == null ? "" : context.Request["action"].ToString();
    
                CheckAction(action, context);
    
                context.Response.Write(JsonConvert.SerializeObject(result));
            }
            private void CheckAction(string action, HttpContext context)
            {
                switch (action)
                {
                    case "Upload":
                        Upload(context);
                        break;
                    default:
                        result = new ProcessResult()
                        {
                            Result = ProcessResultType.Error,
                            Data = XMLHelper.GetValue("defaultNoParaInfo")
                        };
                        break;
                }
            }
    
            private void Upload(HttpContext context)
            {
                try
                {
                    DateTime nowTime = DateTime.Now;
                    string newDirectory = nowTime.ToString("yyyyMMdd/");
                    string path = "/Upload/";
                    string _filedir = context.Server.MapPath(path + newDirectory);
                    int cout = context.Request.Files.Count;
                    if (cout > 0)
                    {
                        HttpPostedFile httpFile = context.Request.Files[0];
                        if (httpFile != null)
                        {
                            try
                            {
                                string fileExt = Path.GetExtension(httpFile.FileName).ToLower();
                                string fileFilt = Paras.UploadFileFilt;
                                if (fileFilt.IndexOf(fileExt) <= -1)
                                {
                                    result = new ProcessResult()
                                    {
                                        Result = ProcessResultType.Error,
                                        Data = "支持格式:" + fileFilt
                                    };
                                    return;
                                }
    
                                //判断文件大小    
                                int length = httpFile.ContentLength;
                                if (length / 1024 / 1024 > Paras.3)
                                {
                                    result = new ProcessResult()
                                    {
                                        Result = ProcessResultType.Error,
                                        Data = "文件过大,请上传小于3M的文件"
                                    };
                                    return;
                                }
    
                                Random rd = new Random();
                                string newFileName = nowTime.ToString("yyyyMMddHHmmssfff") + rd.Next(1000, 9999) + Path.GetExtension(httpFile.FileName);
                                if (!Directory.Exists(_filedir))
                                {
                                    Directory.CreateDirectory(_filedir);
                                }
                                string fileName = _filedir + newFileName;
    
                                httpFile.SaveAs(fileName);
                                result = new ProcessResult()
                                {
                                    Result = ProcessResultType.Success,
                                    Data = path + newDirectory + newFileName
                                };
                            }
                            catch (Exception e)
                            {
                                result = new ProcessResult()
                                {
                                    Result = ProcessResultType.Error,
                                    Data = "uploadError:" + e.Message
                                };
                            }
                        }
    
                    }
                }
                catch (Exception e)
                {
                    result = new ProcessResult()
                    {
                        Result = ProcessResultType.Error,
                        Data = e.Message
                    };
                }
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    

    5、ProcessResult.cs 结果集

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace WebCore
    {
        public class ProcessResult
        {
            public object Data { get; set; }
            public ProcessResultType Result { get; set; }
        }
        public enum ProcessResultType
        {
            Error = -1,
            Exclam = 0,
            Success = 1
        }
    }
    
  • 相关阅读:
    SciTE 快捷键
    MySQL数据库性能优化
    常用的正则表达式全面总结
    PHP中的Memcache的应用
    经典数学题:态度决定一切
    PHP Socket基础
    由浅入深探究mysql索引结构原理、性能分析与优化
    深入理解HTTP协议
    PHP会话控制之Session介绍原理
    PHP会话控制之Cookie使用例子
  • 原文地址:https://www.cnblogs.com/clear-dream/p/6611621.html
Copyright © 2011-2022 走看看