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

七牛

配置ACCESS_KEY和SECRET_KEY

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

o_QQ20160426141738.png

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),可轻松实现领域服务和应用服务的注入。

转载于:https://www.cnblogs.com/chiakiyu/p/5434867.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值