之前有写过一篇文章,基于asp.net mvc 封装 Web Uploader 上传插件:

http://www.cnblogs.com/vanteking/p/5623682.html

已经实现的功能有:

封装 my97datepicker 日历插件 :

 @Html.Calendar("time")

封装 ckeditor编辑器:

 @Html.RichTextEditor("CKEDITOR1", new RichTextEditor { Height = 300, ToolBar = RichTextEditorToolBar.Full, Plugins = RichTextEditorPlugins.CKEDITOR, Width = 900 })

另外还有百度编辑器的封装,只需要改版参数就可以使用了。
ckeditor 里还配合使用了 ckfinder

今天重点讲下封装的Web Uploader插件,图片可以上传到七牛云和本地。

先上图:

图片上传到七牛云:

                //Qiniu云
var file = Request.Files["file"];
if (file != null && file.InputStream != null && file.ContentLength > )
{
//七牛空间
var qiniuStore = SystemConst.GetRandStore();
//学校
var school = ViewBag._school_ as SchoolLibrary;
//时间戳
var stime = TimeHelper.ConvertDateTimeInt(DateTime.Now);
//原始文件名
var mine = file.FileName.Substring(file.FileName.LastIndexOf("."));
//目标地址
var filePath = "{0}/{1}/{2}{3}".FormatWith(school.Domain, user.ID.GetHashCode(), stime, mine);
//模型
var buket = new Bucket
{
FileType = (UploadFileType)fileType,
stream = file.InputStream,
saveFilePath = filePath,
saveFileName = file.FileName,
bucket = qiniuStore.Space,
PicDomain = qiniuStore.Domain
};
uploadResult = BucketHelper.UploadFile(buket);

删除七牛云图片:

 //人员信息
var user = ViewBag.stu as OStudent;
//域名空间
var qiniuStore = SystemConst.StoreList.FirstOrDefault(m => file.IsNullOrEmpty() == false && file.StartsWith(m.Domain)); if (string.IsNullOrEmpty(file) == true) { _msg = "文件未找到!"; }
else if (qiniuStore != null)
{
if (file.ToLower().Contains(user.ID.GetHashCode().ToString()) == false) { _msg = "没有权限!"; }
else
{
//地址
var saveFilePath = file.Replace(qiniuStore.Domain, "").Trim();
//模型
var buket = new Bucket
{
saveFilePath = saveFilePath,
bucket = qiniuStore.Space,
};
var result = BucketHelper.Delete(buket);
if (result.State == (int)UploadState.Success)
{
_err = false;
}
else
{
_msg = result.ErrorMessage;
}
}
}

还做了一个七牛云的类的封装:

上传:

     /// <summary>
/// 上传文件
/// </summary>
/// <param name="model"></param>
/// <param>FileType 文件类型</para>
/// <param>bucket 目标空间 默认:studystone</para>
/// <param>PicDomain 目标空间对应的默认域名 </para>
/// <param>strSchool 学校二级</para>
/// <param>saveFileName 目标文件名</para>
/// <param>localFile 本地文件(优先)</para>
/// <param>stream 文件流(本地文件存在则,忽略)</para>
/// <returns></returns>
public static UploadResult UploadFile(Bucket model)
{
//结果
var result = new UploadResult { };
//数据
var data = new HttpResult();
//类型
switch (model.FileType)
{
case UploadFileType.Image:
model.mimeLimit = "image/*";
model.fsizeLimit = ;//2M
break;
case UploadFileType.Video:
model.mimeLimit = "video/mp4";
model.fsizeLimit = ;//40M
break;
case UploadFileType.File:
default:
model.mimeLimit = "application/msword;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/pdf;application/vnd.ms-powerpoint;application/x-rar-compressed;application/x-zip-compressed;text/css;text/html;application/x-javascript;application/json;text/plain";
model.fsizeLimit = ;//40M
break;
}
// 上传策略
PutPolicy putPolicy = new PutPolicy();
// 设置要上传的目标空间
putPolicy.Scope = model.bucket;
// 上传策略的过期时间(单位:秒)
putPolicy.SetExpires();
// 文件上传完毕后,在多少天后自动被删除
//putPolicy.DeleteAfterDays = int.MaxValue;
// Use AK & SK here
Mac mac = new Mac(AK, SK);
// 生成上传凭证
string uploadToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
// 开始上传文件
FormUploader um = new FormUploader();
try
{
//目标地址
if (string.IsNullOrEmpty(model.localFile) == false && File.Exists(model.localFile) == true)
{
data = um.UploadFile(model.localFile, model.saveFilePath, uploadToken);
}
else if (model.stream != null)
{
data = um.UploadStream(model.stream, model.saveFilePath, uploadToken);
}
else
{
result.State = UploadState.Unknown;
result.ErrorMessage = "上传文件为空";
return result;
}
//结果判断
switch (data.Code)
{
//上传成功
case :
result.file = new QiniuFile
{
Date = DateTime.Now.ToString("yyyy年MM月dd日"),
Moment = DateTime.Now.ToString("HH:mm tt").Replace("上午", "AM").Replace("下午", "PM"),
FileName = model.saveFilePath.Substring(model.saveFilePath.LastIndexOf("/") + ),
Fsize = ,
Src = model.PicDomain + model.saveFilePath
};
result.State = UploadState.Success;
result.Url = model.PicDomain + model.saveFilePath;
result.OriginFileName = model.saveFilePath.Substring(model.saveFilePath.LastIndexOf("/") + );
break;
case :
result.State = UploadState.TypeNotAllow;
result.ErrorMessage = "不允许的文件格式上传";
break;
case :
result.State = UploadState.TypeNotAllow;
result.ErrorMessage = "文件大小超过限制";
break;
case :
result.State = UploadState.TypeNotAllow;
result.ErrorMessage = "文件已存在";
break;
default:
result.State = UploadState.Unknown;
result.ErrorMessage = "文件上传失败";
break;
}
}
catch (Exception e)
{
result.State = UploadState.Unknown;
result.ErrorMessage = e.Message;
}
return result;
}

获取七牛云图片列表

   /// <summary>
/// 获取空间下面所有的图片
/// </summary>
/// <param name="model"></param>
/// <para>bucket 目标空间默认:stonestudy</para>
/// <para>prefix 按文件名前缀保留搜索结果 如:ss/</para>
/// <para>limit 每次最大请求的数量最大1000</para>
/// <para>delimiter</para>
/// <returns></returns>
public static List<QiniuFile> FileList(Bucket model)
{
Mac mac = new Mac(AK, SK);
BucketManager bm = new BucketManager(mac); // 返回结果存储在items中
List<QiniuFile> items = new List<QiniuFile>();
// 由于limit限制,可能需要执行多次操作
// 返回值中Marker字段若非空,则表示文件数超过了limit
do
{
var result = bm.ListFiles(model.bucket, model.prefix, model.marker, model.limit, model.delimiter);
//标记
model.marker = result.Result.Marker;
if (result.Result.Items != null)
{
result.Result.Items.ForEach(m =>
{
var date = TimeHelper.GetFullTime(m.PutTime.ToString());
items.Add(new QiniuFile
{
FileName = m.Key.Substring(m.Key.LastIndexOf("/") + ),
Fsize = m.Fsize,
MimeType = m.MimeType,
Src = model.PicDomain + m.Key,
Date = date.ToString("yyyy年MM月dd日"),
Moment = date.ToString("HH:mm tt").Replace("上午", "AM").Replace("下午", "PM")
});
});
}
} while (!string.IsNullOrEmpty(model.marker));
return items;
}

删除图片

 /// <summary>
/// 删除文件
/// </summary>
/// <param name="model"></param>
/// <para>bucket 目标空间 默认:studystone</para>
/// <para>saveFilePath 目标文件,非全路径 例如: temp/logo.png</para>
/// <returns></returns>
public static UploadResult Delete(Bucket model)
{
var result = new UploadResult();
try
{
Mac mac = new Mac(AK, SK);
BucketManager target = new BucketManager(mac);
var data = target.Delete(model.bucket, model.saveFilePath);
switch (data.Code)
{
//上传成功
case :
result.State = UploadState.Success;
break;
case :
result.State = UploadState.TypeNotAllow;
result.ErrorMessage = " 待删除资源不存在";
break;
default:
result.State = UploadState.Unknown;
result.ErrorMessage = "文件删除失败";
break;
}
}
catch (Exception)
{
result.State = UploadState.Unknown;
result.ErrorMessage = "文件删除失败";
}
return result;
}

使用上传插件 Web Uploader 上传图片到七牛云(C#)的更多相关文章

  1. vue上传视屏或者图片到七牛云

    首先下载七牛云的JavaScript-SDK npm install qiniu-js 下载完成JavaScript-SDK以后就可以上传图片信息了 <template> <div& ...

  2. 上传图片到七牛云(服务端 node.js sdk)

    大体思路 前端要上传图片到七牛云,需要有一个token进行授权操作,而获取这个上传的upload token(以下简称upToken),在服务端需要一定的身份校验,比如说:只有登录的vip用户才能拿到 ...

  3. Web Uploader文件上传插件

    http://www.jq22.com/jquery-info2665   插件描述:WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现 ...

  4. 20款最好的jQuery文件上传插件

    当它是关于开发网络应用程序和网页的时候,文件上传功能的重要性是不容忽视的.一个文件上传功能可以让你上传所有类型的文件在网站上,包括视频,图像,文件和更多.创建一个文件上传功能,对你的网站是不是很难,有 ...

  5. WebUploader文件图片上传插件的使用

    最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...

  6. jQuery文件上传插件Uploadify(转)

    一款基于flash的文件上传,有进度条和支持大文件上传,且可以多文件上传队列. 这款在flash的基础上增加了html5的支持,所以在移动端也可以使用. 由于官方提供的版本是flash免费,html5 ...

  7. JQuery上传插件Uploadify使用详解

    本文转载http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html Uploadify是JQuery的一个上传插件,实现的效果非常不错 ...

  8. (转)JQuery上传插件Uploadify使用详解

    原文地址:http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html Uploadify是JQuery的一个上传插件,实现的效果非常不 ...

  9. jquery上传插件Jquery.uploadify.js-转

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示 ...

随机推荐

  1. Python入门教程(2)

    人生苦短,我玩蛇0.0! Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991 ...

  2. MellPlayer, 基于网易云歌单的命令行播放器

    MellPlayer 前言 我写代码时非常喜欢听音乐,最近在网易云歌单中听到了许多入耳惊艳的歌,觉得非常不错.但是歌单的随机播放以及快速切换是个软肋,于是开发了MellPlayer,可以按照分类随机听 ...

  3. JavaWeb---javabean

    1.javabean 1.1--javabean的创建方法 1.2-javabean可以使用跟java一样的方法创建javabean实例 创建一个普通类Users(1.共有类 2.私有属性 3.无参构 ...

  4. 理解云计算的(IaaS PaaS SaaS)

    本文不经允许,不得转载! 云计算技术已经慢慢普及了.我们做技术的有必要学习云计算技术. IaaS:Infrastructure-as-a-Service(基础设施即服务)云计算到来之前,很多企业都是自 ...

  5. UNIX 网络编程知识,函数积累

    1: fprintf()#include <stdio.h> int fprintf( FILE *stream, const char *format, ... );fprintf()函 ...

  6. JavaScript重新介绍

    本文转载自 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/A_re-introduction_to_JavaScript 引言 为什么 ...

  7. python rsa 加密解密 (编解码,base64编解码)

    最近有需求,需要研究一下RSA加密解密安全:在网上百度了一下例子文章,很少有文章介绍怎么保存.传输.打印加密后的文本信息,都是千篇一律的.直接在一个脚本,加密后的文本信息赋于变量,然后立马调用解密.仔 ...

  8. MyBatis极速入门开发手册(2017-2-6更新)

    前言: 本篇文章对我的学习内容做一个归纳梳理,同时也记录一些学习过程中遇上的问题及注意事项等等,可以帮助新入门的朋友们消除一些误区与盲区,希望能帮上一些正在学习的朋友们.在编写时会引用一些mybati ...

  9. Chapter 3. Programming with RDDs

     Programming with RDDs This chapter introduces Spark's core abstraction for working with data, the r ...

  10. 解决!同一ajax请求获取的图片路劲,在谷歌浏览器能正确展示图片,在火狐浏览器则显示路径undefined

    今天的工作学习之路是解决了昨天的问题,可看我昨天的随笔了解问题. 非常感谢昨天各位积极地解答,在此我引用 @不带汽的可乐 的方法进行解决,问题其实挺简单就解决了,先说说原因,在火狐浏览器中,当我在js ...