记一次上传文件到七牛云存储的经历(Plupload & UEditor)(.net)

时间:2023-01-19 10:05:19

七牛

配置ACCESS_KEY和SECRET_KEY

Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY";
Qiniu.Conf.Config.SECRET_KEY = "SECRET_KEY";

记一次上传文件到七牛云存储的经历(Plupload & UEditor)(.net)

Plupload&七牛

这个简单,因为七牛的JS SDK就是使用了Plupload 点击查看官方文档

七牛强烈建议去我们自己的服务器获取token,这里我们使用C# SDK里的教程

编写获取Token的方法

/// <summary>
/// 获取token
/// <param name="bucket">空间名</param>
/// </summary>
public string GetUpToken(string bucket)
{
//普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
var putPolicy = new PutPolicy(bucket);
//调用Token()方法生成上传的Token
var upToken = putPolicy.Token();
return upToken;
}

UEditor&七牛

使用UEditor是可以实现客户端直传到七牛的,使用JS SDK重写UEditor的所有上传按钮(参考UEditor官方文档)。

但是太麻烦了,成本太高,我的项目的瓶颈是在下载而不是在上传,所以我没有实现UEditor直传文件到七牛,而是使用服务器中转文件流到七牛。

直接上代码:

编写上传方法

/// <summary>
/// 上传
/// </summary>
/// <param name="bucket">空间名</param>
/// <param name="contentStream">流</param>
/// <param name="key">文件名</param>
/// <returns></returns>
public bool Upload(string bucket, Stream contentStream, string key)
{
var target = new IOClient();
var extra = new PutExtra();
var putPolicy = new PutPolicy(bucket, 3600);
var upToken = putPolicy.Token();
var ret = target.Put(upToken, key, contentStream, extra);
return ret.OK;
}

修改UEditor的UploadHandler.cs

在UploadHandler.cs找到以下代码

var savePath = PathFormatter.Format(uploadFileName, UploadConfig.PathFormat);

并在该行下方添加以下代码

try
{
var key = savePath;//这里使用了UEditor生成的文件名(带路径,可以在ueditor\net\config.json中自定义),也可以自己使用代码生成
using (var memoryStream = new MemoryStream(uploadFileBytes))
{
//1.可以实现你项目本身的一些业务,比如将文件信息存入一个单独的附件表
//2.调用上面的Upload方法
var bucket = "{你七牛上的空间名称}"; ****.Upload(bucket, memoryStream,key);
}
var bucketDomainUrl = "{您七牛上的空间对应的域名,用于下载}";
Result.Url = bucketDomainUrl + savePath;
Result.State = UploadState.Success;
}
catch (Exception e)
{
Result.State = UploadState.FileAccessError;
Result.ErrorMessage = e.Message;
}

具体代码的细节和架构相关,可参考自己的项目而定,本人使用ABP(ASP.NET Boilerplate),可轻松实现领域服务和应用服务的注入。

记一次上传文件到七牛云存储的经历(Plupload & UEditor)(.net)的更多相关文章

  1. 使用Qiniu-JavaScript-SDK上传文件至七牛云存储

    一.Qiniu-JavaScript-SDK介绍 基于 JS-SDK 可以方便的从浏览器端上传文件至七牛云存储,并对上传成功后的图片进行丰富的数据处理操作. JS-SDK 兼容支持 H5 File A ...

  2. laravel上传文件到七牛云存储

    背景 最近在用PHP和laravel框架做一个图片网站,需要将图片存贮到云端,搜索下了对比了下功能,发现七牛云存储不错(主要小流量免费),便选择使用七牛作为图片存储空间. 要实现的功能很简单,选择本地 ...

  3. 利用ThinkPHP自带的七牛云驱动上传文件到七牛云以及删除七牛云文件方法

    一.准备工作 1.注册七牛云账号 2.选择对象储存->创建空间->设置为公开 3.在config配置文件中添加以下代码 'UPLOAD_FILE_QINIU' => array ( ...

  4. RN 上传文件到以及上传文件到七牛云(初步)

    本文将介绍: 如何使用原生 Javascript 上传文件 如何使用七牛云 SDK 上传文件到七牛云 在 App 中文件上传是一个非常重要的需求,但是翻遍 React Naitve 的官方文档没有发现 ...

  5. SpringSpringBoot上传文件到七牛云

    准备工作 maven pom.xml添加七牛云的sdk依赖 <dependency> <groupId>com.qiniu</groupId> <artifa ...

  6. c&plus;&plus;使用http协议上传文件到七牛云服务器

    使用c++ http协议上传文件到七牛服务器时,比较搞的一点就是header的设置: "Content-Type:multipart/form-data;boundary=xxx" ...

  7. Laravel-admin 七牛云上传文件到七牛云出现卡顿失败情况

    由于所做项目需要管理后台众多,所以选择了Laravel-admin后台框架进行开发.节省了权限控制以及页面处理等问题的时间 Laravel-admin文档地址 http://laravel-admin ...

  8. java&lpar;SSM&rpar;上传文件到七牛云(对象存储)

    项目中会用到大量的图片和小视频,为了分担服务器压力,将文件都放在七牛云.这里的思路很简单, 就是移动端.pc端把文件上传到服务器,服务器做一个临时缓存,保存必要的信息到数据库后, 将文件上传到七牛云, ...

  9. Nestjs 上传文件到七牛云

    $ npm install qiniu import * as url from 'url'; import * as qiniu from 'qiniu'; @Post('upload') @Use ...

随机推荐

  1. Swift - 文本输入框&lpar;UITextField&rpar;

    1,文本框的创建,有如下几个样式: UITextBorderStyle.none:无边框 UITextBorderStyle.line:直线边框 UITextBorderStyle.roundedRe ...

  2. go中间的&amp&semi;和&ast;

    package main import "fmt" func main() { var a int = 1 var b *int = &a var c **int = &a ...

  3. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  4. Linux 挂载存储方法

    申请的虚拟机因总宕机,处理完之后多分配了我100G空间,还是狠讲究的嘛,挂载方法如下: 初始磁盘挂载情况:[root@wmstest ~]# df -hFilesystem Size Used Ava ...

  5. python下异常处理

    1.python下异常如何处理: #encoding=utf-8 """ python遇到异常,程序直接运行 try: "判断有可能抛出异常的代码" ...

  6. spi数据KL25用SPI操作nor flash

    最近研究spi数据,稍微总结一下,以后继续补充: KL25的SPI连接一个nor flash.该flash型号为FM25F04,支撑SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,S ...

  7. 运行java web项目时报错:Several ports &lpar;8005&comma; 8080&comma; 8009&rpar; required

    运行java web项目时报错:Several ports (8005, 8080, 8009) required 如下图 之所以报上面的错误是因为安装Tomcat的时候,已经把端口8005,8080 ...

  8. (六十六)TableView内容超过一屏时滚动到屏幕底部的方法

    假设数据放置在self.chatMessage数组内,只需要让tableView滚动到最后一条数据底部即可,调用scrollToRowAtIndexPath方法: [_tableView reload ...

  9. php 防止sql注入的简单方法

    您可以使用PHP的功能,如函数stripslashes()和addslashes(),mysql_real_escape_string()等,使安全的SQL查询. 以下是安全的SQL语句,使用PHP ...

  10. 浅谈IM软件client的断线重连、心跳和长在线

    版权声明:原创文章,未经博主同意禁止转载.欢迎点击头像上方"郭晓东的专栏"查看专栏 https://blog.csdn.net/hherima/article/details/27 ...