用ueditor上传图片、文件等到七牛云存储
ueditor上传文件,是用数据流的形式上传的。
而七牛云存储官方文档中,只提供了文件路径上传的方式。
但是,仅仅是在官方文档中写了这一种方式。
事实上,利用VS的对象管理器,打开Qiniu的dll,我们可以看到以下东西:
其实Qiniu提供的SDK中,是可以利用文件流上传文件的。
所以,根据官方文档提供的案例,我们可以将上传改写成下面的样子:
/// <summary>
/// 上传文件
/// </summary>
/// <param name="key">保存的文件名</param>
/// <param name="fileStream">本地文件路径</param>
public static void PutFile(string key, Stream fileStream)
{
var policy = new PutPolicy(bucket, );
string upToken = policy.Token();
PutExtra extra = new PutExtra();
IOClient client = new IOClient();
client.Put(upToken, key, fileStream, extra);
}
其实就只修改了PutFile的参数,我将bucket(七牛上的空间名)做成了成员变量。
另外的变化就是用Stream代替了原来的文件名。
最后的client调用也是使用的上面查看的Put方法。
写好上传的方法之后,我们打开editor的UploadHandler.cs文件,修改其中的部分内容,用文件流上传文件:
//var savePath = PathFormatter.Format(uploadFileName, UploadConfig.PathFormat);
//var localPath = Server.MapPath(savePath);
try
{
//if (!Directory.Exists(Path.GetDirectoryName(localPath)))
//{
// Directory.CreateDirectory(Path.GetDirectoryName(localPath));
//}
//File.WriteAllBytes(localPath, uploadFileBytes);
Qiniu.Conf.Config.ACCESS_KEY = "****************************************";
Qiniu.Conf.Config.SECRET_KEY = "****************************************";
PutFile(uploadFileName, new MemoryStream(uploadFileBytes));
Result.Url = MakeGetToken(uploadFileName);
Result.State = UploadState.Success;
}
注释的部分是ueditor提供的案例代码,我们创建一个MemoryStream对象,传给PutFile的Stream参数。
这里不能直接使用file.InputStream。
最后的那个MakeGetToken方法,用来生成上传的后的文件路径,也是修改自官方文档。
因为我用的是七牛云的私人空间,所以需要多出这样一个步骤:
/// <summary>
/// 得到上传后的文件URL路径。
/// </summary>
/// <param name="key">文件名</param>
/// <returns>带有下载口令的URL路径</returns>
public static string MakeGetToken(string key)
{
string baseUrl = GetPolicy.MakeBaseUrl(domain, key);
string private_url = GetPolicy.MakeRequest(baseUrl);
return private_url;
}
同样的,这里我将domain设置为成员变量。
最后,一定要记得把ueditor中config.json的"imageUrlPrefix"的值设置为空,否则在你上传成功了,在ueditor中也是无法直接查看上传的内容,因为会imageUrlPrefix会默认的加载你的文件链接前面。
用ueditor上传图片、文件等到七牛云存储的更多相关文章
- 使用Qiniu-JavaScript-SDK上传文件至七牛云存储
一.Qiniu-JavaScript-SDK介绍 基于 JS-SDK 可以方便的从浏览器端上传文件至七牛云存储,并对上传成功后的图片进行丰富的数据处理操作. JS-SDK 兼容支持 H5 File A ...
- 【UEditor】远程上传图片到【七牛云存储】
杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...
- 记一次上传文件到七牛云存储的经历(Plupload & UEditor)(.net)
七牛 配置ACCESS_KEY和SECRET_KEY Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY"; Qiniu.Conf.Config. ...
- laravel上传文件到七牛云存储
背景 最近在用PHP和laravel框架做一个图片网站,需要将图片存贮到云端,搜索下了对比了下功能,发现七牛云存储不错(主要小流量免费),便选择使用七牛作为图片存储空间. 要实现的功能很简单,选择本地 ...
- Linux系统定时备份网站文件到七牛云存储脚本
1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...
- 【Uploadify】远程上传图片到【七牛云存储】
1.下载Uploadify版本3.2.1 2.下载七牛SDK 解压后将 qiniu 文件夹copy到uploadify文件夹下 3.修改uploadify.php文件 <?php $verify ...
- 七牛云存储Python SDK使用教程 - 上传策略详解
文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k ...
- ueditor上传图片到七牛云存储(form api,java)
转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...
- 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载
这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...
随机推荐
- Java反射 - 2(对象复制,父类域,内省)
为什么要复制对象?假设有个类Car,包含name,color2个属性,那么将car1对象复制给car2对象,只需要car2.setName(car1.getName)与car2.setColor(ca ...
- 关于<%@ include file=" " %>与<jsp:include page=""></jsp:include>中的那些问题?
今天在使用<%@ include file=" " %>指令时,竟然在页面中不让使用?这是怎么回事:问题如下图: 顿时被这个问题给搞到了!!!突然想到在以前的 JSP ...
- 类似百度音乐唱片播放时CD图片不停旋转的实现
类似百度音乐唱片播放时CD图片不停旋转的实现 效果图 1 html代码 2 <imgsrc="img/logo.png"class="img-responsive& ...
- Lua 仿PHP的strtotime
由于工作原因,两周前开始研究Lua,因为之前的项目要由php改成Lua实现,而一些php里现成的东西,在Lua里就需要手写,于是就有了下面的代码.写的比较粗糙,权当做个记录吧. --[[ 获取时间戳 ...
- ubuntu下怎么显示右上角的小键盘
Ubuntu右上角小键盘不见了解决方法: ibus输入法的图标经常消失,输入中文时很不方便,重启一下ibus! 按Ctrl+ALT+T 快捷键打开终端, 输入: 1.killall ibu ...
- 复杂事件处理引擎—Esper入门
说明: 以下内容,可以参考Esper官方网站<Qucik start & Tutorial >(顺序做了部分调整). PS:因为英语水平有限(大学期间刚过CET4的英语小盲童一枚) ...
- github使用入门 之GIT GUI Windows版
申明下是原创. 这二天网上也看了不少关于github使用的文章,github对代码管理也开始用起来了.这篇给github新手看,大牛们请跳过. github说白了就是版本管理库,最常用的就是程序代码管 ...
- XJOI网上同步测试DAY14 T3
思路:tarjan把桥找出来,然后缩点,注意这里的缩点是:如果两个点之间的连边不是桥,那么就把他们缩起来,然后用一个lct维护,对于每个询问,如果官道连接的是两个联通块的话,就把他们连起来,否则我们就 ...
- 输出宽字符数组 C++
std::cout << "ASCII and ANSI" << std::endl;std::wcout << L"INSERT M ...
- COJ 0802 非传统题(二)
(颓了这么多天是时候干点正事了QAQ) 非传统题(二) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 还是很久很久以前,chx ...