C#使用百度Ueditor富文本框实现上传文件

下面是“C#使用百度Ueditor富文本框实现上传文件”的完整攻略。

准备工作

  1. 安装百度Ueditor
    在NuGet中检索百度ueditor.net.Mvc或者使用百度Ueditor官网提供的下载方式,将ueditor的dll放入Solution下面的bin目录下。

  2. 配置Ueditor

(1)在网站的Web.config文件中,加入如下内容。

<system.web> 
   <httpRuntime maxRequestLength="1048576" /> 
</system.web> 

<system.WebServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="1073741824"/>
        </requestFiltering>
    </security>
</system.WebServer>

其中,httpRuntime指定了最大上传文件大小,这里的1048576表示1M;而requestLimits也指定了最大上传文件大小,这里的1073741824表示1G。

(2)在config.json文件中,配置如下内容。

"imageUrlPrefix": "", 
"imagePathFormat": "/Uploads/{yyyy}{mm}{dd}/{time}{rand:6}", 
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"],
"fileUrlPrefix": "", 
"filePathFormat": "/Uploads/{yyyy}{mm}{dd}/{time}{rand:6}", 
"fileAllowFiles": [
    ".txt", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".rar", ".zip"
],
"catcherLocalDomain": ["127.0.0.1","localhost"],
"catchRemoteImageEnable":false 

这里的imageUrlPrefixfileUrlPrefix指定了上传文件的路径前缀;而imagePathFormatfilePathFormat则指定了上传文件的具体路径格式;imageAllowFilesfileAllowFiles则指定了允许上传的文件类型。

实现过程

  1. 控制器

在控制器中,定义上传文件的接口,并接收返回值。

[HttpPost]
public JsonResult UploadFile()
{
    var result = new UpLoadFileResult();

    try
    {
        var file = Request.Files[0];
        var fileName = Path.Combine(Server.MapPath("~/Uploads"), DateTime.Now.ToString("yyyyMMddhhmmss") + Path.GetExtension(file.FileName));
        var savePath = fileName.Replace(Server.MapPath("~"), "");

        file.SaveAs(fileName);

        result.Url = savePath.Replace(@"\", "/");
        result.State = "SUCCESS";
    }
    catch
    {
        result.State = "ERROR";
    }

    return Json(result);
}

/// <summary>
/// 上传文件的返回结果
/// </summary>
public class UpLoadFileResult
{
    public string State { get; set; }

    public string Url { get; set; }
}

其中,UpLoadFileResult类是用于返回上传文件的状态信息。

  1. 视图层

在视图层中,使用Ueditor富文本框,并配置文件上传功能。

@using UEditor;
@{
    ViewBag.Title = "Index";
}
<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title - My ASP.NET Application</title>
    <script src="@Url.Content("~/Scripts/jquery-1.10.2.min.js")"></script>
    <script src="@Url.Content("~/ueditor/ueditor.config.js")"></script>
    <script src="@Url.Content("~/ueditor/ueditor.all.js")"></script>
</head>
<body>
    <div>
        <textarea id="content" name="content"></textarea>
    </div>
</body>
<script>
    var editor = new UE.ui.Editor({
        initialFrameHeight: 280, //初始化高度
        scaleEnabled: false, //禁用缩放
        toolbars: [[
            'undo',
            'redo',
            'bold',
            'italic',
            'underline',
            'fontsize',
            'forecolor',
            'BackGroundColor',
            'justifyleft',
            'justifycenter',
            'justifyright',
            'insertunorderedlist',
            'insertorderedlist',
            'link',
            'unlink',
            'attachment'
        ]]
    });

    editor.render('content');

    var attachment = null;

    // 上传文件
    editor.ready(function () {
        editor.addListener("beforeInsertImage", function (t, arg) {
            for (var i = 0; i < arg.length; i++) {
                if (attachment != null) {
                    arg[i].url = attachment;
                }
            }
            attachment = null;
        });

        editor.addListener("afterUpfile", function (t, arg) {
            if (arg.state === "SUCCESS") {
                attachment = arg.url;
                var field = editor.getDialog("attachment");
                var dialog = new UE.ui.Dialog({
                    iframeUrl: "@Url.Action("UploadFile", "Home")",
                    editor: editor,
                    name: "attachment",
                    title: "附件上传",
                    cssRules: "width:600px;height:400px;"
                });
                dialog.render();
                dialog.open();
            }
        });
    });
</script>

</html>

其中,UEditor的配置信息包括:

  • initialFrameHeight:初始化高度,即编辑器的高度;
  • scaleEnabled:是否启用缩放功能;
  • toolbars:工具栏,默认启用的工具。

  • 示例

(1)将上传的文件保存在本地

[HttpPost]
public JsonResult UploadFile()
{
    var result = new UpLoadFileResult();

    try
    {
        var file = Request.Files[0];
        var fileName = Path.Combine(Server.MapPath("~/Uploads"), DateTime.Now.ToString("yyyyMMddhhmmss") + Path.GetExtension(file.FileName));
        var savePath = fileName.Replace(Server.MapPath("~"), "");

        file.SaveAs(fileName);

        result.Url = savePath.Replace(@"\", "/");
        result.State = "SUCCESS";
    }
    catch
    {
        result.State = "ERROR";
    }

    return Json(result);
}

在Ueditor的配置信息编辑窗口中,可以直接上传文件,并将其保存在本地。

(2)将上传的文件存储在Azure Blob Storage中

[HttpPost]
public JsonResult UploadFile()
{
    var result = new UpLoadFileResult();

    try
    {
        var file = Request.Files[0];
        var fileName = Path.Combine(Server.MapPath("~/Uploads"), DateTime.Now.ToString("yyyyMMddhhmmss") + Path.GetExtension(file.FileName));
        var savePath = fileName.Replace(Server.MapPath("~"), "");

        //将文件上传到Azure Blob Storage
        var connectionString = ConfigurationManager.ConnectionStrings["AzureCn"].ConnectionString;
        var account = CloudStorageAccount.Parse(connectionString);
        var blobClient = account.CreateCloudBlobClient();

        var container = blobClient.GetContainerReference("ueditor");
        container.CreateIfNotExists();

        var blobName = Guid.NewGuid().ToString("N") + Path.GetExtension(file.FileName);
        var blob = container.GetBlockBlobReference(blobName);

        using (var fileStream = file.InputStream)
        {
            blob.UploadFromStream(fileStream);
            blob.Properties.ContentType = file.ContentType;
            blob.SetProperties();
        }

        result.Url = "https://" + account.BlobEndpoint.Host + "/" + container.Name + "/" + blobName;
        result.State = "SUCCESS";
    }
    catch
    {
        result.State = "ERROR";
    }

    return Json(result);
}

在Ueditor的配置信息编辑窗口中,上传的文件会直接存储在Azure Blob Storage中,并返回其路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用百度Ueditor富文本框实现上传文件 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#实现将一个字符串进行翻转显示的6种方法

    下面给出C#实现将一个字符串进行翻转显示的6种方法的完整攻略。 步骤1:分析题目要求 题目要求将一个字符串进行翻转显示,该字符串可以包含中英文、数字、标点符号,我们需要使用C#实现该功能,并提供6种实现方法。 步骤2:C#实现翻转字符串 方法1:使用Array.Reverse()方法 我们可以使用C#的Array.Reverse()方法来实现字符串翻转。该方…

    C# 2023年6月7日
    00
  • JWT.net 操作实践方法

    JWT.net 操作实践方法 JSON Web Token(JWT)是一种基于JSON格式的Web Token标准,用于在不信任的环境下对用户进行身份验证和授权。JWT.net是一个C#中的JWT实现库,本篇文章将介绍如何使用JWT.net进行JWT生成、验证、签名等操作。 安装 可以通过NuGet包管理器或者命令行安装JWT.net: Install-Pa…

    C# 2023年5月31日
    00
  • .NET7使用HttpClient实现查询天气预报接口

    朋友做网站需要根据城市展示天气预报,找了一圈没有找到靠谱的接口,今天在中央气象台的官网查询某个城市找到了接口,先用postman试了一下居然可以使用,可以查询某个城市7天的天气预报等信息。但是查询编码是气象台自己的编码,在网上搜索了一下居然有这个编码。本文使用HttpClient方法查询这个接口。 天气接口 城市编码 HttpClient是.net core…

    C# 2023年4月17日
    00
  • C# NullReferenceException解决案例讲解

    下面是C#NullReferenceException解决案例讲解的完整攻略: 一、什么是NullReferenceException? NullReferenceException 是 .NET Framework 程序中最常出现的异常类型之一。它通常被抛出,当代码尝试使用一个值为null的对象引用,或者尝试对一个空对象进行访问。这个异常在 C# 程序中很…

    C# 2023年5月14日
    00
  • .NET Core 处理 WebAPI JSON 返回烦人的null为空

    .NET Core 处理 WebAPI JSON 返回烦人的null为空攻略 在使用 .NET Core 开发 WebAPI 时,有时会遇到 JSON 返回值中的 null 被转换为空字符串的问题。本攻略将介绍如何解决这个问题。 步骤 步骤1:安装 Newtonsoft.Json 库 在 .NET Core 中,可以使用 Newtonsoft.Json 库来…

    C# 2023年5月17日
    00
  • ASP.NET MVC使用Log4Net记录异常日志并跳转到静态页

    下面是ASP.NET MVC使用Log4Net记录异常日志并跳转到静态页的完整攻略。 前置条件 一个已经配置好了的ASP.NET MVC项目 Log4Net库的安装和配置 步骤 第一步:创建Log4Net配置文件 在项目根目录下创建一个Log4Net.config文件,内容为: <?xml version="1.0" encodin…

    C# 2023年6月3日
    00
  • C#3.0使用EventLog类写Windows事件日志的方法

    关于如何使用 C#3.0 的 EventLog 类写 Windows 事件日志,我们可以按照以下步骤进行: 1. 引用 System.Diagnostics 命名空间 在 C#3.0 中,我们需要使用 System.Diagnostics 命名空间提供的 EventLog 类来访问 Windows 事件日志。因此,在代码文件的头部,需要使用 using 指令…

    C# 2023年5月15日
    00
  • C# 匿名类型之 RuntimeBinderException

    匿名类型在某些场景下使用起来还是比较方便,比如某个类型只会使用一次,那这个时候定义一个 Class 就没有多少意义,完全可以使用匿名类型来解决,但是在跨项目使用时,还是需要注意避免出现 RuntimeBinderException 问题 问题描述 比如我们有一个 netstandard2.0 类型的类库项目,里面有一个这样的方法: public static…

    C# 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部