记一次上传文件到七牛云存储的经历(Plupload & UEditor)(.net)
七牛
配置ACCESS_KEY和SECRET_KEY
Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY";
Qiniu.Conf.Config.SECRET_KEY = "SECRET_KEY";

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)的更多相关文章
- 使用Qiniu-JavaScript-SDK上传文件至七牛云存储
一.Qiniu-JavaScript-SDK介绍 基于 JS-SDK 可以方便的从浏览器端上传文件至七牛云存储,并对上传成功后的图片进行丰富的数据处理操作. JS-SDK 兼容支持 H5 File A ...
- laravel上传文件到七牛云存储
背景 最近在用PHP和laravel框架做一个图片网站,需要将图片存贮到云端,搜索下了对比了下功能,发现七牛云存储不错(主要小流量免费),便选择使用七牛作为图片存储空间. 要实现的功能很简单,选择本地 ...
- 利用ThinkPHP自带的七牛云驱动上传文件到七牛云以及删除七牛云文件方法
一.准备工作 1.注册七牛云账号 2.选择对象储存->创建空间->设置为公开 3.在config配置文件中添加以下代码 'UPLOAD_FILE_QINIU' => array ( ...
- RN 上传文件到以及上传文件到七牛云(初步)
本文将介绍: 如何使用原生 Javascript 上传文件 如何使用七牛云 SDK 上传文件到七牛云 在 App 中文件上传是一个非常重要的需求,但是翻遍 React Naitve 的官方文档没有发现 ...
- SpringSpringBoot上传文件到七牛云
准备工作 maven pom.xml添加七牛云的sdk依赖 <dependency> <groupId>com.qiniu</groupId> <artifa ...
- c++使用http协议上传文件到七牛云服务器
使用c++ http协议上传文件到七牛服务器时,比较搞的一点就是header的设置: "Content-Type:multipart/form-data;boundary=xxx" ...
- Laravel-admin 七牛云上传文件到七牛云出现卡顿失败情况
由于所做项目需要管理后台众多,所以选择了Laravel-admin后台框架进行开发.节省了权限控制以及页面处理等问题的时间 Laravel-admin文档地址 http://laravel-admin ...
- java(SSM)上传文件到七牛云(对象存储)
项目中会用到大量的图片和小视频,为了分担服务器压力,将文件都放在七牛云.这里的思路很简单, 就是移动端.pc端把文件上传到服务器,服务器做一个临时缓存,保存必要的信息到数据库后, 将文件上传到七牛云, ...
- 使用python3.7+Vue.js2.0+Django2.0.4异步前端通过api上传文件到七牛云云端存储
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_130 之前一篇文章是通过普通js+tornado来上传七牛云:使用Tornado配合七牛云存储api来异步切分上传文件,本次使用v ...
随机推荐
- PHP路径常量和函数解释
文件目录:
- mysql5.6-5.7性能调优
1.DEFAULT_STORAGE_ENGINE 如果你已经在用MySQL 5.6或者5.7,并且你的数据表都是InnoDB,那么表示你已经设置好了.如果没有,确保把你的表转换为InnoDB并且设置d ...
- Oracle Created Database Users: Password, Usage and Files References (文档 ID 160861.1)
This document is no longer actively maintained, for info on specific (new) users in recent product e ...
- 人人都是 DBA(XIV)存储过程信息收集脚本汇编
什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA& ...
- AMD加载器实现笔记(三)
上一篇文章中我们为config添加了baseUrl和packages的支持,那么这篇文章中将会看到对shim与paths的支持. 要添加shim与paths,第一要务当然是了解他们的语义与用法.先来看 ...
- Linux date命令
命令概述 date命令可以用来设置和显示系统当前时间,特别是在有一些Shell命令里面用到date命令来做日期的不同的显示,所以该命令也是非常需要掌握的一个命令. 语法 date [OPTION].. ...
- 如何给开源的DUILib支持Accessibility
最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软 ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- 一则线上MySql连接异常的排查过程
Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中 ...
- VS 2008 生成操作中各个选项的差别
近日,在编译C#项目时经常发现有些时候明明代码没错,但就是编译不过,只有选择重新编译或者清理再编译才会不出错,本着求学的态度,搜罗了下VS2008IDE中生成操作的种类以及差别,整理如下: 内容( ...