ueditor上传文件,是用数据流的形式上传的。

而七牛云存储官方文档中,只提供了文件路径上传的方式。

但是,仅仅是在官方文档中写了这一种方式。

事实上,利用VS的对象管理器,打开Qiniu的dll,我们可以看到以下东西:

其实Qiniu提供的SDK中,是可以利用文件流上传文件的。

所以,根据官方文档提供的案例,我们可以将上传改写成下面的样子:

  1. /// <summary>
  2. /// 上传文件
  3. /// </summary>
  4. /// <param name="key">保存的文件名</param>
  5. /// <param name="fileStream">本地文件路径</param>
  6. public static void PutFile(string key, Stream fileStream)
  7. {
  8. var policy = new PutPolicy(bucket, );
  9. string upToken = policy.Token();
  10. PutExtra extra = new PutExtra();
  11. IOClient client = new IOClient();
  12. client.Put(upToken, key, fileStream, extra);
  13. }

其实就只修改了PutFile的参数,我将bucket(七牛上的空间名)做成了成员变量。

另外的变化就是用Stream代替了原来的文件名。

最后的client调用也是使用的上面查看的Put方法。

写好上传的方法之后,我们打开editor的UploadHandler.cs文件,修改其中的部分内容,用文件流上传文件:

  1. //var savePath = PathFormatter.Format(uploadFileName, UploadConfig.PathFormat);
  2. //var localPath = Server.MapPath(savePath);
  3. try
  4. {
  5. //if (!Directory.Exists(Path.GetDirectoryName(localPath)))
  6. //{
  7. // Directory.CreateDirectory(Path.GetDirectoryName(localPath));
  8. //}
  9. //File.WriteAllBytes(localPath, uploadFileBytes);
  10. Qiniu.Conf.Config.ACCESS_KEY = "****************************************";
  11. Qiniu.Conf.Config.SECRET_KEY = "****************************************";
  12. PutFile(uploadFileName, new MemoryStream(uploadFileBytes));
  13. Result.Url = MakeGetToken(uploadFileName);
  14. Result.State = UploadState.Success;
  15. }

注释的部分是ueditor提供的案例代码,我们创建一个MemoryStream对象,传给PutFile的Stream参数。

这里不能直接使用file.InputStream。

最后的那个MakeGetToken方法,用来生成上传的后的文件路径,也是修改自官方文档。

因为我用的是七牛云的私人空间,所以需要多出这样一个步骤:

  1. /// <summary>
  2. /// 得到上传后的文件URL路径。
  3. /// </summary>
  4. /// <param name="key">文件名</param>
  5. /// <returns>带有下载口令的URL路径</returns>
  6. public static string MakeGetToken(string key)
  7. {
  8. string baseUrl = GetPolicy.MakeBaseUrl(domain, key);
  9. string private_url = GetPolicy.MakeRequest(baseUrl);
  10. return private_url;
  11. }

同样的,这里我将domain设置为成员变量。

最后,一定要记得把ueditor中config.json的"imageUrlPrefix"的值设置为空,否则在你上传成功了,在ueditor中也是无法直接查看上传的内容,因为会imageUrlPrefix会默认的加载你的文件链接前面。

用ueditor上传图片、文件等到七牛云存储的更多相关文章

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

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

  2. 【UEditor】远程上传图片到【七牛云存储】

    杂谈:最近在玩一个第三方的微信开发平台,里面的图片都是上传到[七牛云存储]的,用了一下非常的好用,支持各种语言,SDK齐全.支持全分布式系统架构以及存储技术和数据加速,于是决定将网站的图片都存储到七牛 ...

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

    七牛 配置ACCESS_KEY和SECRET_KEY Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY"; Qiniu.Conf.Config. ...

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

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

  5. Linux系统定时备份网站文件到七牛云存储脚本

    1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...

  6. 【Uploadify】远程上传图片到【七牛云存储】

    1.下载Uploadify版本3.2.1 2.下载七牛SDK 解压后将 qiniu 文件夹copy到uploadify文件夹下 3.修改uploadify.php文件 <?php $verify ...

  7. 七牛云存储Python SDK使用教程 - 上传策略详解

    文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k  ...

  8. ueditor上传图片到七牛云存储(form api,java)

    转:http://my.oschina.net/duoduo3369/blog/174655 ueditor上传图片到七牛云存储 ueditor结合七牛传图片 七牛的试炼 开发前的准备与注意事项说明 ...

  9. 在ThinkPHP框架(5.0.24)下引入Ueditor并实现向七牛云对象存储上传图片同时将图片信息保存到MySQL数据库,同时实现lazyload懒加载

    这是我花了很多天的时间才得以真正实现的一组需求. 文章后面有完整Demo的GitHub链接. 一. 需求描述 1. 应用是基于ThinkPHP5开发的: 2. 服务器环境是LNMP,PHP版本是7.2 ...

随机推荐

  1. iOS开源 框架

    UI界面类项目: Panoramagl ——720全景展示 Panorama viewer library foriPhone, iPad and iPod touch MBProgressHUD — ...

  2. javascript中的screen对象

    screen对象通常包含下列属性(许多浏览器都加入了自己的属性): 1.availHeight :  窗口可以使用的屏幕的高度(以像素计)其中包括操作系统元素(如window工具栏)需要的空间. 2. ...

  3. vs2012远程调试

    不知道大家有没有遇到过这种情况,刚开发完的程序,明明在本机能够好好的运行,可是部署到服务器过分发给用户时,总是出现莫名其妙的错误. 一时半会又看不出问题来,怎么办呢?难道只能在服务器或是客户电脑上装一 ...

  4. Python自动化运维之9、模块之sys、os、hashlib、random、time&datetime、logging、subprocess

    python模块 用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...

  5. 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannot&nbs

    错误提示是:        org.apache.jasper.JasperException: This absolute uri http://java.sun.com/jsp/jstl/core ...

  6. Swift—Core Foundation框架-备

    Core Foundation框架是苹果公司提供一套概念来源于Foundation框架,编程接口面向C语言风格的API.虽然在Swift中调用这种C语言风格的API比较麻烦,但是在OS X和iOS开发 ...

  7. UICollectionView 讲解-备

    什么是UICollectionView UICollectionView是一种新的数据展示方式,简单来说可以把他理解成多列的UITableView(请一定注意这是UICollectionView的最最 ...

  8. (摘)Zebra打印机异常处理

    一.一般条码打印设备按图指示方向,虚线为碳带安装路径,实线为标签路径.回卷后废碳带不易剥落,则在装入前用废标签的光滑底纸卷在回卷轴上,然后再上碳带.安装标签时,根据不同标签宽度调整限纸器.压头弹簧均匀 ...

  9. mongodb 增加用户以及认证用户

    test>use admin switched to db admin admin>db.addUser('yshy','yshy') { "user" : " ...

  10. [LeetCode 114] - 将树平面化为链表(Flatten Binary Tree to Linked List)

    问题 给出一个二叉树,将其原地平面化为链表. 例如,给出: 1   /  \  2    5 / \     \ 3  4     6 平面化后的树看起来应该是这样: 1 \  2    \      ...