配置ACCESS_KEY和SECRET_KEYjavascript
Qiniu.Conf.Config.ACCESS_KEY = "ACCESS_KEY"; Qiniu.Conf.Config.SECRET_KEY = "SECRET_KEY";
这个简单,由于七牛的JS SDK就是使用了Plupload 点击查看官方文档html
七牛强烈建议去咱们本身的服务器获取token,这里咱们使用C# SDK里的教程java
/// <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是能够实现客户端直传到七牛的,使用JS SDK重写UEditor的全部上传按钮(参考UEditor官方文档)。git
可是太麻烦了,成本过高,个人项目的瓶颈是在下载而不是在上传,因此我没有实现UEditor直传文件到七牛,而是使用服务器中转文件流到七牛。github
直接上代码:json
/// <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; }
在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),可轻松实现领域服务和应用服务的注入。code