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#线程入门教程之单线程介绍

    下面我将详细讲解一下“C#线程入门教程之单线程介绍”的完整攻略。 1. 什么是线程? 在介绍单线程之前,我们先来了解一下什么是线程。在计算机中,线程是进程内部的一个独立执行流,用于执行并发任务。与进程不同,线程之间共享同一进程的内存和文件,可以方便地协同工作。 2. 单线程 单线程指的是程序只有一个线程在执行任务。在此种情况下,一个任务必须等待另一个任务完成…

    C# 2023年6月7日
    00
  • C#实现Base64编码与解码及规则

    C# 实现 Base64 编码与解码 Base64 编码将二进制数据转换成 ASCII 字符。C# 中可以通过 System.Convert 类实现 Base64 编码和解码。 Base64 编码 byte[] inputArray = System.Text.Encoding.UTF8.GetBytes("Hello World!");…

    C# 2023年6月6日
    00
  • SQL Server中实现二进制与字符类型之间的数据转换

    SQL Server 中实现二进制与字符类型之间的数据转换主要涉及到以下两种类型的转换: 将二进制数据转换为字符类型数据 在 SQL Server 中,可以使用 CAST 和 CONVERT 函数将二进制数据转换成字符类型数据。 示例1:将二进制数据转换为十六进制字符类型数据 DECLARE @binaryData VARBINARY(10) = 0x546…

    C# 2023年5月31日
    00
  • C++中#include头文件的示例详解

    下面是关于”C++中#include头文件的示例详解”的攻略: 什么是头文件? 在C++中,头文件是一种用于包含函数和变量定义的文件。这些文件通常包含函数和变量定义,使得在源代码中我们可以使用这些定义。通常情况下,头文件扩展名为.h。实际上,C++编译器不知道如何处理头文件,它只知道如何处理源代码文件,而头文件的作用就是将需要在源代码中用到的函数和变量定义放…

    C# 2023年6月6日
    00
  • C#如何使用Task执行异步操作

    C# 中提供了 Task 类型,可以轻松地执行异步操作,下面是关于 Task 的详细攻略: 1. Task 的基本使用方法 Task 提供了许多方法来启动新的任务,其中最常见的方法是 Task.Run。以下是使用 Task.Run 执行异步操作的示例: static async Task<int> CalculateSumAsync() { in…

    C# 2023年5月15日
    00
  • 基于C#生成随机数示例

    生成随机数是很常见的一种需求,无论是在游戏、金融还是科学领域,都需要使用到随机数。C#作为一门强大的编程语言,自然也提供了非常方便的方法来生成随机数。 下面是生成随机数的完整攻略。 步骤一 – 声明随机数生成器 首先,我们需要创建 Random 类型的对象,来帮助我们生成随机数。 在 C# 中,我们可以使用以下代码生成随机数生成器: Random rando…

    C# 2023年6月1日
    00
  • 原生JS实现加载进度条

    原生JS实现加载进度条 在Web开发中,加载进度条是一个非常常见的功能。本文将介绍如何使用原生JS实现加载进度条。 步骤1:HTML结构 首先,我们需要在HTML中添加进度条的结构。可以在HTML文件中添加以下代码: <div id="progress-bar"> <div id="progress"…

    C# 2023年5月15日
    00
  • 浅谈使用MVC模式进行JavaScript程序开发

    让我们来讲一下如何使用MVC模式进行JavaScript程序开发的完整攻略。先来了解一下什么是MVC模式吧。 什么是MVC模式 MVC模式拆分JavaScript应用程序为Model、View和Controller三个部分。M表示数据模型(model),V表示用户界面(view),C表示控制逻辑(controller)。这种将应用程序分解成三个独立的部分的方…

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