Пример #1
0
        public static string UploadFile(Stream fileStream, string fileName, string AK, String SK, string bucket)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(AK, SK);

            string saveKey = fileName;

            // 上传策略,参见
            // http://developer.qiniu.com/article/developer/security/put-policy.html
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;

            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);

            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // http://developer.qiniu.com/article/developer/security/upload-token.html

            string jstr  = putPolicy.ToJsonString();
            string token = Auth.CreateUploadToken(mac, jstr);

            FormUploader fu = new FormUploader();

            // 支持自定义参数
            //var extra = new System.Collections.Generic.Dictionary<string, string>();
            //extra.Add("FileType", "UploadFromLocal");
            //extra.Add("YourKey", "YourValue");
            //UploadFile(...,extra)

            var result = fu.UploadStreamAsync(fileStream, saveKey, token);

            return(JsonConvert.DeserializeObject <ResultModel>(result.Result.Text).key);
        }
Пример #2
0
        public HttpResult uploadByte(string saveKeys, byte[] data)
        {
            Config.AutoZone(AK, bucket, false);
            Mac mac = new Mac(AK, SK);
            //string saveKey = saveKeys;
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            putPolicy.Scope = bucket + ":" + saveKeys;
            //putPolicy.Scope = bucket;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(100000);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //putPolicy.DeleteAfterDays = 100000;
            string       jstr   = putPolicy.ToJsonString();
            string       token  = Auth.CreateUploadToken(mac, jstr);
            FormUploader fu     = new FormUploader();
            HttpResult   result = fu.UploadData(data, saveKeys, token);

            return(result);
        }
Пример #3
0
        /// <summary>
        /// 简单上传-上传字节数据
        /// </summary>
        public void UploadData()
        {
            // 构建配置类
            var config = new Config
            {
                Zone = Zone.ZONE_CN_East
            };

            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            var mac     = new Mac(AccessKey, SecretKey);
            var bucket  = Bucket;
            var saveKey = "1-2.jpg";

            byte[] data = System.IO.File.ReadAllBytes(@"E:\src\Tdf.S01\Tdf.Resources\Pic\Scan\1-2.jpg");
            // byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello World!");
            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            var putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            var          jstr   = putPolicy.ToJsonString();
            var          token  = Auth.CreateUploadToken(mac, jstr);
            FormUploader fu     = new FormUploader(config);
            HttpResult   result = fu.UploadData(data, saveKey, token, null);

            Console.WriteLine(result);

            Console.ReadLine();
        }
Пример #4
0
        public List <Object> UploadQiniu(IFormFile file)
        {
            var configurationSection = _configuration.GetSection("Qiniu");
            //_configuration.GetValue("");

            Mac       mac       = new Mac(configurationSection["AccessKey"], configurationSection["SecretKey"]);// AK SK使用
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = configurationSection["Bucket"];
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());//token生成
            Config config = new Config()
            {
                Zone     = Zone.ZONE_CN_South,
                UseHttps = true
            };

            FormUploader  upload = new FormUploader(config);
            HttpResult    result = new HttpResult();
            List <Object> list   = new List <Object>();

            if (file.Length > 0)
            {
                var _fileName = ContentDispositionHeaderValue
                                .Parse(file.ContentDisposition)
                                .FileName
                                .Trim('"');
                var    _qiniuName = "qiniu" + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + _fileName;//重命名文件加上时间戳
                Stream stream     = file.OpenReadStream();
                result = upload.UploadStream(stream, _qiniuName, token, null);
                if (result.Code == 200)
                {
                    list.Add(new { fileName = _fileName, qiniuName = _qiniuName, uploadTime = DateTime.Now, Remark = "" });
                }
                else
                {
                    throw new Exception(result.RefText);//上传失败错误信息
                }
            }
            return(list);
        }
Пример #5
0
        /// <summary>
        /// 上传(来自网络回复的)数据流
        /// </summary>
        public void UploadStream()
        {
            var token = QiNiuHelper.GetToken();

            try
            {
                string url  = "http://img.ivsky.com/img/tupian/pre/201610/09/beifang_shanlin_xuejing-001.jpg";
                var    wReq = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
                var    resp = wReq.GetResponse() as System.Net.HttpWebResponse;
                using (var stream = resp.GetResponseStream())
                {
                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                    // 请使用FormUploader或者ResumableUploader的UploadStream方法
                    var result = new FormUploader().UploadStream(stream, "xuejing-001.jpg", token);
                    Console.WriteLine(result);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
Пример #6
0
 /// <summary>
 /// 上传文件流到七牛云
 /// </summary>
 /// <param name="stream">文件流</param>
 /// <param name="name">后缀名</param>
 /// <returns></returns>
 public static string UploadStream(Stream stream, string name = ".jpg")
 {
     try
     {
         Mac mac = new Mac("h-0RX_DYCsRy3d8NITyVejjVWDXJbVyolHgPQ5xA",
                           "gnTJ6QzZe5tVSZvTrlQLhYs0hZ-Oava2n8FcJtgs");
         // 上传文件名
         string key = string.IsNullOrEmpty(name) ? Guid.NewGuid().ToString() : Guid.NewGuid().ToString() + name;
         // 本地文件路径
         //string filePath = imgUrl;
         // 存储空间名
         string Bucket = "fyzsmanager";
         // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
         PutPolicy putPolicy = new PutPolicy();
         putPolicy.Scope = Bucket;
         putPolicy.SetExpires(3600);
         putPolicy.DeleteAfterDays = 60;//60天后自动删除
         string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
         Config config = new Config();
         // 设置上传区域
         config.Zone = Zone.ZONE_CN_South;
         // 设置 http 或者 https 上传
         config.UseHttps      = true;
         config.UseCdnDomains = true;
         config.ChunkSize     = ChunkUnit.U512K;
         // 表单上传
         FormUploader target = new FormUploader(config);
         HttpResult   result = target.UploadStream(stream, key, token, null);
         if (result.Code == 200)
         {
             return(string.Format("http://oxdwc8csx.bkt.clouddn.com/{0}", key));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return(null);
 }
Пример #7
0
        // 使用FormUploader上传文件
        public static void frmUploadFile()
        {
            Mac    mac = new Mac(Settings.AccessKey, Settings.SecretKey);
            string key = "test_FormUploaderUploadFile.png";

            FormUploader target   = new FormUploader();
            string       filePath = "F:\\test.png";

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = Settings.Bucket;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays = 10;
            string token = Auth.createUploadToken(putPolicy, mac);

            Console.WriteLine(key);
            Console.WriteLine(putPolicy);
            Console.WriteLine(token);

            target.uploadFile(filePath, key, token, null, null);

            Console.WriteLine();
        }
Пример #8
0
        // 使用FormUploader上传数据
        public static void frmUploadData()
        {
            Mac          mac    = new Mac(Settings.AccessKey, Settings.SecretKey);
            FormUploader target = new FormUploader();

            byte[] data = Encoding.UTF8.GetBytes("hello world");
            string key  = "test_FormUploaderUploadData.txt";

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = Settings.Bucket;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays = 1;
            string token = Auth.createUploadToken(putPolicy, mac);

            Console.WriteLine(key);
            Console.WriteLine(putPolicy);
            Console.WriteLine(token);

            target.uploadData(data, key, token, null, null);

            Console.WriteLine();
        }
Пример #9
0
        public string UploadToQiniu(IFormFile file)
        {
            if (file.Length == 0)
            {
                throw new LinCmsException("文件为空");
            }

            FormUploader upload = new FormUploader(new Config()
            {
                Zone     = Zone.ZONE_CN_South,
                UseHttps = _configuration[LinConsts.Qiniu.UseHttps].ToBoolean()
            });

            string     path   = _configuration["Qiniu:PrefixPath"] + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + Path.GetExtension(file.FileName);
            Stream     stream = file.OpenReadStream();
            HttpResult result = upload.UploadStream(stream, path, GetAccessToken(), null);

            if (result.Code != (int)HttpCode.OK)
            {
                throw new LinCmsException("上传失败");
            }
            return(path);
        }
Пример #10
0
        public string UploadFile(string FileName, byte[] data, string BucketName = "")
        {
            if (string.IsNullOrWhiteSpace(BucketName))
            {
                BucketName = this.Bucket;
            }

            Mac       mac = new Mac(AccessKey, SecretKey);
            PutPolicy pp  = new PutPolicy();//上传参数

            pp.Scope = $"{BucketName}:{FileName}";
            pp.SetExpires(3600);
            //pp.DeleteAfterDays = 1;
            string Token  = Auth.CreateUploadToken(mac, pp.ToJsonString());
            Config config = new Config()
            {
                Zone = Zone.ZONE_CN_East,
            };
            FormUploader upload = new FormUploader(config);
            HttpResult   result = upload.UploadData(data, FileName, Token, null);

            return(result.ToString());
        }
Пример #11
0
        /// <summary>
        /// 上传完毕后触发数据处理
        /// </summary>
        public static void uploadWithFop()
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey);

            string bucket    = "test";
            string saveKey   = "x-1.jpg";
            string localFile = "D:\\QFL\\1.png";

            // 如果想要将处理结果保存到SAVEAS_BUCKET空间下,文件名为SAVEAS_KEY
            // 可以使用savas参数 <FOPS>|saveas/<encodedUri>
            // 根据fop操作不同,上传完毕后云端数据处理可能需要消耗一定的处理时间
            string encodedUri = Base64.UrlSafeBase64Encode(bucket + ":" + "1-r-x.jpg");
            // 进行imageView2操作后将结果另存
            string fops = "imageView2/0/w/200|saveas/" + encodedUri;

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope         = bucket;
            putPolicy.PersistentOps = fops;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays     = 1;
            putPolicy.PersistentNotifyUrl = "http://xar.fengyh.cn/qiniu/upload-callback/handler.php";

            // 将PutPolicy转换为JSON字符串
            string jstr = putPolicy.ToJsonString();

            string token = Auth.CreateUploadToken(mac, jstr);

            FormUploader fu = new FormUploader();

            var result = fu.UploadFile(localFile, saveKey, token);

            Console.WriteLine(result);
        }
        /// <summary>
        /// 根据文件流上传
        /// </summary>
        /// <param name="param"></param>
        /// <param name="isResume">是否允许续传(续传采用非表单提交方式)</param>
        /// <returns></returns>
        public UploadResultDto UploadStream(UploadByStreamParam param, bool isResume = false)
        {
            var    uploadPersistentOps = GetUploadPersistentOps(param.UploadPersistentOps);
            string token = GetUploadCredentials(QiNiuConfig,
                                                new UploadPersistentOpsParam(param.Key, uploadPersistentOps));

            if (isResume)
            {
                ResumableUploader target =
                    new ResumableUploader(Core.Tools.GetConfig(QiNiuConfig, uploadPersistentOps));
                HttpResult result =
                    target.UploadStream(param.Stream, param.Key, token, GetPutExtra(uploadPersistentOps));
                bool res = result.Code == (int)HttpCode.OK;
                return(new UploadResultDto(res, result, res ? "成功" : result.ToString()));
            }
            else
            {
                FormUploader target = new FormUploader(Core.Tools.GetConfig(QiNiuConfig, uploadPersistentOps));
                HttpResult   result =
                    target.UploadStream(param.Stream, param.Key, token, GetPutExtra(uploadPersistentOps));
                bool res = result.Code == (int)HttpCode.OK;
                return(new UploadResultDto(res, result, res ? "成功" : result.ToString()));
            }
        }
Пример #13
0
        public void uploadDataTest()
        {
            //Settings.load();
            Settings.LoadFromFile("F:\\test.cfg");
            Mac          mac    = new Mac(Settings.AccessKey, Settings.SecretKey);
            FormUploader target = new FormUploader();

            byte[] data = Encoding.UTF8.GetBytes("hello world");
            string key  = "test_FormUploaderUploadData.txt";

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = Settings.Bucket;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays = 1;
            string              token               = Auth.createUploadToken(putPolicy, mac);
            UploadOptions       uploadOptions       = null;
            UpCompletionHandler upCompletionHandler = new UpCompletionHandler(delegate(string fileKey, ResponseInfo respInfo, string response)
            {
                Assert.AreEqual(200, respInfo.StatusCode);
            });

            target.uploadData(data, key, token, uploadOptions, upCompletionHandler);
        }
Пример #14
0
        /// <summary>
        /// 七牛云上传 {PrefixPath}/{yyyyMMddHHmmssffffff}.文件后缀
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        private string QiniuUpload(IFormFile file)
        {
            if (file.Length == 0)
            {
                throw new LinCmsException("文件为空");
            }

            FormUploader upload = new FormUploader(new Config()
            {
                Zone     = Zone.ZONE_CN_South,
                UseHttps = _fileStorageOption.Qiniu.UseHttps
            });

            string path = _fileStorageOption.Qiniu.PrefixPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + Path.GetExtension(file.FileName);

            using Stream stream = file.OpenReadStream();
            HttpResult result = upload.UploadStream(stream, path, GetAccessToken(), null);

            if (result.Code != (int)HttpCode.OK)
            {
                throw new LinCmsException("上传失败");
            }
            return(path);
        }
Пример #15
0
        public ActionResult Edit()
        {
            var name  = Request.Form["name"];
            var about = Request.Form["about"];

            var        gid        = 0;
            Tab_User   u          = null;
            HttpCookie authCookie = Request.Cookies["a"]; // 获取cookie

            if (authCookie != null)
            {
                try
                {
                    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); // 解密
                    var user = SerializeHelper.FromJson <Tab_User>(ticket.UserData);
                    u = _us.GetUser(user.F_Name, user.F_Password);
                    if (u != null)
                    {
                    }
                    else
                    {
                        return(RedirectToAction("SignOut", "Home"));
                    }
                }
                catch (Exception ex)
                {
                    return(RedirectToAction("SignOut", "Home"));
                }
            }
            var gzh = _gzhs.GetGZH(u.F_Id);

            if (gzh != null)
            {
                gid = gzh.F_Id;
            }

            if (gid == 0)
            {
                // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "账号没有关联公众号"
                }));
            }

            if (name != null && name.Length > 200)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "公号名称长度必须小于200字符"
                }));
            }

            if (about != null && about.Length > 4000)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "公号简介长度必须小于4000字符"
                }));
            }

            var logo = "";

            if (Request.Files.Count > 0 &&
                Request.Files[0].ContentLength > 0 &&
                new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower())))
            {
                var key   = QN.GZHLogo(gid);
                var token = QN.GetUploadToken(QN.BUCKET, key);

                FormUploader fu     = new FormUploader();
                HttpResult   result = fu.UploadStream(Request.Files[0].InputStream, key, token);
                if (result.Code == 200)
                {
                    logo = key;
                }
            }

            Tab_GongZhongHao g = new Tab_GongZhongHao();

            g.F_About = (about != null && about.Length > 0) ? about : null;
            g.F_Logo  = logo != "" ? logo : null;
            g.F_Id    = gid;

            var i = _gzhs.UpdateGZHInfo(g);

            if (i == 1)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.OK, message = "成功"
                }));
            }
            else
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "失败"
                }));
            }
        }
Пример #16
0
        public bool UploadStream(Stream stream, string fileName, out string address)
        {
            address = "";
            if (stream == null)
            {
                return(false);
            }
            if (string.IsNullOrWhiteSpace(fileName))
            {
                return(false);
            }
            try
            {
                var extensionName = fileName.Substring(fileName.LastIndexOf("."));
                if (!_imageExtensions.Contains(extensionName.ToLower()))
                {
                    return(false);
                }
                var generateFileName = $"{DateTime.Now.ToString("yyyyMMddHHmmssfff-")}{Guid.NewGuid().GetHashCode().ToString().Replace("-", string.Empty)}{extensionName}";
                var saveKey          = $"default/{generateFileName}";

                // 生成(上传)凭证时需要使用此Mac
                // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
                // 实际应用中,请自行设置您的AccessKey和SecretKey
                Mac mac = new Mac(QiniuImgBiz.AccessKey, QiniuImgBiz.SecretKey);


                // 上传策略,参见
                // https://developer.qiniu.com/kodo/manual/put-policy
                PutPolicy putPolicy = new PutPolicy();

                // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
                // putPolicy.Scope = bucket + ":" + saveKey;
                putPolicy.Scope = DefaultBucket;


                // 上传策略有效期(对应于生成的凭证的有效期)
                putPolicy.SetExpires(3600);


                // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
                //putPolicy.DeleteAfterDays = 1;
                // 生成上传凭证,参见
                // https://developer.qiniu.com/kodo/manual/upload-token
                string jstr  = putPolicy.ToJsonString();
                string token = Auth.CreateUploadToken(mac, jstr);

                FormUploader fu     = new FormUploader();
                var          result = fu.UploadStream(stream, saveKey, token);
                if (result.Code == 200)
                {
                    address = ImageUrlPrefix + saveKey;
                    return(true);
                }

                return(false);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);
                return(false);
            }
        }
Пример #17
0
        public ActionResult InfoEdit()
        {
            var id    = Request.Form["id"];
            var about = Request.Form["about"];

            var gid = 0;

            if (!int.TryParse(id, out gid) || gid == 0)
            {
                // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "公号不存在"
                }));
            }

            if (about != null && about.Length > 4000)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "公号简介长度必须小于4000字符"
                }));
            }

            var logo = "";

            if (Request.Files.Count > 0 &&
                Request.Files[0].ContentLength > 0 &&
                new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower())))
            {
                var key   = QN.GZHLogo(gid);
                var token = QN.GetUploadToken(QN.BUCKET, key);

                FormUploader fu     = new FormUploader();
                HttpResult   result = fu.UploadStream(Request.Files[0].InputStream, key, token);
                if (result.Code == 200)
                {
                    logo = key;
                }
            }

            Tab_GongZhongHao g = new Tab_GongZhongHao();

            g.F_About = (about != null && about.Length > 0) ? about : null;
            g.F_Logo  = logo != "" ? logo : null;
            g.F_Id    = gid;

            var i = _gzhs.UpdateGZHInfo(g);

            if (i == 1)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.OK, message = "成功"
                }));
            }
            else
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "失败"
                }));
            }
        }
Пример #18
0
        public void SendReport()
        {
            string currentFolder    = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string tempFolder       = Path.GetTempPath();
            string tempWatsonFolder = Path.Combine(tempFolder, WatsonName);

            Mac       mac       = new Mac("Zj7BFGPSGlDdbB2FDjT8patg5R9DBs_C6kMv_bRe", "YSQCj_M0sIrhcnuvQd7lvr50roOdbXE30ZSgTAsd");
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = "watsondump-xdaggerminer";
            string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

            Config config = new Config();

            config.Zone          = Zone.ZONE_CN_East;
            config.MaxRetryTimes = 3;

            try
            {
                if (!Directory.Exists(tempWatsonFolder))
                {
                    Directory.CreateDirectory(tempWatsonFolder);
                }
            }
            catch (Exception)
            {
            }

            CopyFileNoThrow(currentFolder, tempWatsonFolder, "manager-config.json");
            CopyFileNoThrow(currentFolder, tempWatsonFolder, "manager-info.json");
            CopyFileNoThrow(currentFolder, tempWatsonFolder, "Manager-Trace.log");

            if (!string.IsNullOrWhiteSpace(this.Description))
            {
                try
                {
                    using (StreamWriter sw = new StreamWriter(Path.Combine(tempWatsonFolder, "description.txt")))
                    {
                        sw.WriteLine(this.Description);
                    }
                }
                catch (Exception)
                {
                }
            }

            string dumpFileFullPath = Path.Combine(tempFolder, WatsonName + ".zip");

            try
            {
                ZipFile.CreateFromDirectory(tempWatsonFolder, dumpFileFullPath, CompressionLevel.Fastest, true);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Error while packing dump file.", ex);
            }

            try
            {
                FormUploader target = new FormUploader(config);
                HttpResult   result = target.UploadFile(dumpFileFullPath, WatsonName + ".zip", token, null);

                if (result.Code == 200)
                {
                    // Success
                }
                else
                {
                    throw new HttpException("UploadFile to Qiniu failed. Code=" + result.Code);
                }
            }
            catch (Exception ex)
            {
                throw new HttpException("UploadFile to Qiniu failed.", ex);
            }
        }
Пример #19
0
        public ActionResult Upload()
        {
            //List<string> fileNames = new List<string>();
            List <ImgInfo> fileList = new List <ImgInfo>();
            var            files    = Request.Files; //["Img"]

            for (int i = 0; i < files.Count; i++)
            {
                var file = files[i];
                if (file == null)
                {
                    return(Json(new { state = false, msg = "图片不存在,请重新上传" }));
                }
                byte[] bytes         = Common.StreamToBytes(file.InputStream);
                var    fileExtension = FileHelper.CheckTextFile(bytes);

                if (fileExtension == FileExtension.VALIDFILE)
                {
                    return(Json(new { state = false, msg = "上传的文件已损坏" }));
                }
                if (!(fileExtension == FileExtension.WEBP || fileExtension == FileExtension.GIF || fileExtension == FileExtension.JPG || fileExtension == FileExtension.PNG))
                {
                    return(Json(new { state = false, msg = "上传的类型有误" }));
                }
                //DateTime dt = DateTime.Now;
                Random random      = new Random();
                int    randomNum   = random.Next(0, 99999);
                var    extension   = Path.GetExtension(file.FileName);
                var    newFileName = Guid.NewGuid().ToString("N") + randomNum.ToString() + extension;

                var    imgType = Request["imgType"];
                string upLoadPath;
                if (WebConstants.ImgPathDicts.ContainsKey(imgType))
                {
                    upLoadPath = WebConstants.ImgPathDicts[imgType];
                }
                else
                {
                    return(Json(new { state = false }));
                }
                string fullPath = upLoadPath + newFileName;
                file.SaveAs(Server.MapPath(fullPath));

                //将图片上传到云服务器(七牛云)
                Mac       mac       = new Mac(ConfigurationManager.AppSettings["AccessKey"], ConfigurationManager.AppSettings["SecretKey"]);
                PutPolicy putPolicy = new PutPolicy();
                putPolicy.Scope = ConfigurationManager.AppSettings["Bucket"];
                string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

                Config config = new Config();
                // 空间对应的机房
                config.Zone = Zone.ZONE_CN_North;
                // 是否使用https域名
                config.UseHttps = false;
                // 上传是否使用cdn加速
                config.UseCdnDomains = true;

                FormUploader fu     = new FormUploader(config);
                HttpResult   result = fu.UploadData(bytes, fullPath, token, null);

                ImgInfo imgInfo = new ImgInfo()
                {
                    Url      = "http://localhost:50069/" + fullPath,
                    CloudUrl = "http://shop.statics.hklvia.top/" + fullPath
                };
                fileList.Add(imgInfo);
            }
            return(Json(fileList));
        }
Пример #20
0
        public async Task <IActionResult> QiniuUpload()
        {
            var applicationUser = await _userManager.GetUserAsync(new System.Security.Claims.ClaimsPrincipal(User.Identity));

            if (applicationUser == null || string.IsNullOrEmpty(applicationUser.OrganizationId))
            {
                return(RedirectToAction("Login", "Account"));
            }

            var  files = Request.Form.Files;
            long size  = files.Sum(f => f.Length);

            //size > 20MB refuse upload !
            if (size > 2048000)
            {
                return(Json(new { errno = 3, data = new string[] { } }));
            }

            var result = new List <ImageModel>();

            foreach (var file in files)
            {
                var    fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
                string suffix   = fileName.Split('.')[1];

                if (!pictureFormatArray.Contains(suffix))
                {
                    //图片格式不对,必须为"png", "jpg", "jpeg", "bmp", "gif", "ico", "PNG", "JPG", "JPEG", "BMP", "GIF", "ICO"
                    return(Json(new { errno = 4, data = new string[] { } }));
                }

                var stream = file.OpenReadStream();

                byte[] imgArr = new byte[stream.Length];
                stream.Position = 0;
                stream.Read(imgArr, 0, (int)stream.Length);
                stream.Close();

                var imgBase64Content = Convert.ToBase64String(imgArr);

                var img = new ImageModel
                {
                    CreatedBy          = applicationUser.Id,
                    Description        = string.Empty,
                    Title              = string.Empty,
                    ImageBase64Content = "",//imgBase64Content,
                    ClientFileName     = fileName.Split('.')[0]
                };

                byte[] imageBytes = Convert.FromBase64String(imgBase64Content);

                var filePath = Base64StringToImage(imageBytes, "");


                var       accessKey = "72vGWO8zK9EqGIK_-qUFRjG1JIogApCV13ls57Dv";
                var       secretKey = "iuxEsdQovi7ltkYpBIMcF8-Q7arXS8S0zUP8-Wzx";
                var       bucket    = "gooioscook";
                var       mac       = new Mac(accessKey, secretKey);
                string    sfx       = fileName.Split('.')[fileName.Split('.').Length - 1];
                string    name      = Guid.NewGuid().ToString().Replace("-", "");
                string    key       = $"cookapp_{name}.{sfx}";
                PutPolicy putPolicy = new PutPolicy();
                putPolicy.Scope = bucket + ":" + key;
                var uploadToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

                var config = new Config();
                config.Zone          = Zone.ZoneCnEast;
                config.UseHttps      = true;
                config.UseCdnDomains = true;
                config.ChunkSize     = ChunkUnit.U512K;
                var        target       = new FormUploader(config);
                var        upload_token = uploadToken;
                HttpResult updresult    = target.UploadFile(filePath, key, upload_token, null).ConfigureAwait(false).GetAwaiter().GetResult();
                img.HttpPath = $"https://resources.arcanestars.com/{key}";


                var imgApiUrl = "https://imageservice.gooios.com/api/image/v1";
                var jsonObj   = JsonConvert.SerializeObject(img);
                var res       = await HttpRequestHelper.PostAsync <ImageModel>(imgApiUrl, jsonObj, "63e960bff18111e799160126c7e9f004", applicationUser.Id);

                res.ClientFileName = img.ClientFileName;
                res.HttpPath       = img.HttpPath;
                result.Add(res);
            }

            return(Json(new { errno = 0, data = result.ToArray() }));
        }
Пример #21
0
        /// <summary>
        /// 上传(来自网络回复的)数据流
        /// </summary>
        public static string UpLoadStream(Stream _stream, string _saveKey)
        {
            _saveKey += ".jpg"; //保存格式
            string result_string = _QiNiuUrl + _saveKey;

            //if (Stat(_saveKey))
            //{
            //    return result_string;
            //}

            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac     = new Mac(_AccessKey, _SecretKey);
            string bucket  = _bucket;
            string saveKey = _saveKey;

            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            putPolicy.Scope = bucket + ":" + saveKey;
            //putPolicy.Scope = bucket;


            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);


            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;


            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            string jstr  = putPolicy.ToJsonString();
            string token = Auth.CreateUploadToken(mac, jstr);

            try
            {
                string url  = "http://img.ivsky.com/img/tupian/pre/201610/09/beifang_shanlin_xuejing-001.jpg";
                var    wReq = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
                var    resp = wReq.GetResponse() as System.Net.HttpWebResponse;
                //using (var stream = resp.GetResponseStream())
                using (var stream = _stream)
                {
                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                    // 请使用FormUploader或者ResumableUploader的UploadStream方法
                    FormUploader          fu     = new FormUploader();
                    Qiniu.Http.HttpResult result = fu.UploadStream(stream, saveKey, token);

                    //代表上传成功
                    if (result.Code.ToString().Trim() == "200")
                    {
                        return(result_string);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception ex)
            {
                return(result_string);
            }
        }
Пример #22
0
        public void ProcessRequest(HttpContext context)
        {
            //获取虚拟目录的物理路径。
            UpFileResult upFileResult = new UpFileResult();
            //string imgurls = "";
            //BLL.Common.Logger.Info("Count:" + context.Request.Files.Count);
            //foreach (HttpPostedFile file in context.Request.Files)
            //{
            HttpPostedFile file     = context.Request.Files[0];
            string         fileName = file.FileName;
            string         ser      = context.Request.FilePath;

            Settings.AccessKey = "2qvZqxY40jmIKg5eLip0NCNd0pV4H3PDcPYuDA5M";
            //设置SK
            Settings.SecretKey = "9E7vAfkreDnXuhgfkW_OoeX5DY-bMzIVBPhv7Buo";
            try
            {
                Mac    mac      = new Mac(Settings.AccessKey, Settings.SecretKey);
                string suffixsl = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower();
                Random rd       = new Random();
                string newName  = Guid.NewGuid().ToString();
                //string saveKey = "qiniu" +rd.Next(100,999)+ DateTime.Now.ToString("yyyyMMddHHmmss") + "." + suffixsl;
                string saveKey = "qiniu" + rd.Next(100, 999) + newName + "." + suffixsl;
                BLL.Common.Logger.Info("saveKey:" + saveKey);
                //string allName = AppDomain.CurrentDomain.BaseDirectory + "/upload/" + newfileName + "." + suffixsl;
                //file.SaveAs(allName);
                string allName = "/UploadQiNiuFiles/" + saveKey;
                file.SaveAs(System.Web.HttpContext.Current.Server.MapPath(allName));
                // 本地文件路径
                string filePath = fileName;
                filePath = System.Web.HttpContext.Current.Server.MapPath("/UploadQiNiuFiles/" + saveKey);
                BLL.Common.Logger.Info("filePath:" + filePath);
                // filePath = "D:\\POS.jpg";
                // 存储空间名
                string Bucket = "pic-set";
                // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
                PutPolicy putPolicy = new PutPolicy();
                // 设置要上传的目标空间
                putPolicy.Scope = Bucket;
                // 上传策略的过期时间(单位:秒)
                putPolicy.SetExpires(3600);
                //// 文件上传完毕后,在多少天后自动被删除
                //putPolicy.DeleteAfterDays = 1;
                // 生成上传token
                string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
                BLL.Common.Logger.Info("token:" + token);
                Config config = new Config();
                // 设置上传区域
                config.Zone = Zone.ZONE_CN_East;
                // 设置 http 或者 https 上传
                config.UseHttps      = true;
                config.UseCdnDomains = true;
                config.ChunkSize     = ChunkUnit.U512K;
                // 表单上传
                FormUploader target = new FormUploader(config);
                HttpResult   result = target.UploadFile(filePath, saveKey, token, null);
                BLL.Common.Logger.Info("QiQiuUpFile,result.Code:" + result.Code);
                BLL.Common.Logger.Info("imgUrRL + saveKey01:" + imgUrRL + saveKey);
                if (result.Code == 200)
                {
                    upFileResult.FileName     = saveKey;
                    upFileResult.imgAllUrl    = imgUrRL + saveKey;
                    upFileResult.Result       = true;
                    upFileResult.ErrorMessage = "上传成功";
                }
                else
                {
                    upFileResult.Result       = false;
                    upFileResult.ErrorMessage = "上传失败请稍后重试!";
                }
                BLL.Common.Logger.Info("imgUrRL + saveKey:" + imgUrRL + saveKey);
                BLL.Common.Logger.Info("upFileResult:" + new JavaScriptSerializer().Serialize(upFileResult));
                DeleteFile(filePath);
                //context.Response.Write(new JavaScriptSerializer().Serialize(upFileResult));
                string imgurl = imgUrRL + saveKey;

                //imgurls += imgurl + ",";
                context.Response.Write(imgurl);
            }
            catch (Exception ex)
            {
                upFileResult.Result       = false;
                upFileResult.ErrorMessage = ex.Message;
                BLL.Common.Logger.Info("ex.Message:" + ex.Message);
                BLL.Common.Logger.Info("ex:" + ex);
            }
            //}
            //context.Response.Write(imgurls);
        }
Пример #23
0
        public void uploadFile(object obj)
        {
            FileItem item = obj as FileItem;

            if (syncProgressPage.checkCancelSignal() && item.Length > syncSetting.ChunkUploadThreshold)
            {
                this.doneEvent.Set();
                return;
            }

            string fileFullPath = item.LocalFile;

            if (!File.Exists(fileFullPath))
            {
                Log.Error(string.Format("file not found error, {0}", fileFullPath));
                this.doneEvent.Set();
                return;
            }

            //set upload params
            int  putThreshold  = this.syncSetting.ChunkUploadThreshold;
            int  chunkSize     = this.syncSetting.DefaultChunkSize;
            bool uploadFromCDN = this.syncSetting.UploadFromCDN;

            string myDocPath  = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string recordPath = System.IO.Path.Combine(myDocPath, "qsunsync", "resume");

            if (!Directory.Exists(recordPath))
            {
                Directory.CreateDirectory(recordPath);
            }

            Mac mac = new Mac(SystemConfig.ACCESS_KEY, SystemConfig.SECRET_KEY);

            //current file info
            FileInfo fileInfo         = new FileInfo(fileFullPath);
            long     fileLength       = fileInfo.Length;
            string   fileLastModified = fileInfo.LastWriteTimeUtc.ToFileTime().ToString();
            //support resume upload
            string recorderKey = string.Format("{0}:{1}:{2}:{3}:{4}", this.syncSetting.LocalDirectory,
                                               this.syncSetting.TargetBucket, item.SaveKey, fileFullPath, fileLastModified);

            recorderKey = Hashing.CalcMD5X(recorderKey);

            this.syncProgressPage.updateUploadLog("准备上传文件 " + fileFullPath);

            PutPolicy putPolicy = new PutPolicy();

            if (this.syncSetting.OverwriteDuplicate)
            {
                putPolicy.Scope = this.syncSetting.TargetBucket + ":" + item.SaveKey;
            }
            else
            {
                putPolicy.Scope = this.syncSetting.TargetBucket;
            }
            putPolicy.SetExpires(24 * 30 * 3600);

            string uptoken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

            this.syncProgressPage.updateUploadLog("开始上传文件 " + fileFullPath);

            HttpResult result = null;

            ChunkUnit cu = (ChunkUnit)(chunkSize / (128 * 1024));

            if (item.Length > putThreshold)
            {
                ResumableUploader ru         = new ResumableUploader(uploadFromCDN, cu);
                string            recordFile = System.IO.Path.Combine(recordPath, Hashing.CalcMD5X(fileFullPath));

                UploadProgressHandler upph = new UploadProgressHandler(delegate(long uploaded, long total)
                {
                    this.syncProgressPage.updateSingleFileProgress(taskId, fileFullPath, item.SaveKey, uploaded, fileLength);
                });

                result = ru.UploadFile(fileFullPath, item.SaveKey, uptoken, recordFile, upph, upController);
            }
            else
            {
                FormUploader su = new FormUploader(uploadFromCDN);
                result = su.UploadFile(fileFullPath, item.SaveKey, uptoken);
            }

            if (result.Code == (int)HttpCode.OK)
            {
                item.Uploaded = true;
                this.syncProgressPage.updateUploadLog("上传成功 " + fileFullPath);
                this.syncProgressPage.addFileUploadSuccessLog(string.Format("{0}\t{1}\t{2}", this.syncSetting.TargetBucket,
                                                                            fileFullPath, item.SaveKey));
                this.syncProgressPage.updateTotalUploadProgress();
            }
            else
            {
                item.Uploaded = false;
                this.syncProgressPage.updateUploadLog("上传失败 " + fileFullPath + "," + result.Text);
                this.syncProgressPage.addFileUploadErrorLog(string.Format("{0}\t{1}\t{2}\t{3}", this.syncSetting.TargetBucket,
                                                                          fileFullPath, item.SaveKey, result.Text));
            }

            this.doneEvent.Set();
        }
Пример #24
0
        public async Task <IActionResult> Upload([FromServices] IHostingEnvironment environment, IFormCollection formCollection, [FromForm] FileUploadModel uploadModel)
        {
            var response = new ResponseModel();

            foreach (var formFile in formCollection.Files)
            {
                uploadModel.ContentType = formFile.ContentType.Replace("\\", "").Replace("/", "");
                //创建文件名称
                //string fileName = $"{DescHelper.DescEncrypt($"{JsonHelper.Json(uploadModel)}")}" +
                //    $"{Path.GetExtension(formFile.FileName)}";
                string fileName = $"{Guid.NewGuid().ToString()}" +
                                  $"{Path.GetExtension(formFile.FileName)}";
                //七牛云存储
                if (uploadModel.StorageMethod.Equals("qiniuyun"))//七牛云存储
                {
                    var    stream = formFile.OpenReadStream();
                    byte[] data   = new byte[stream.Length];
                    await stream.ReadAsync(data, 0, data.Length);

                    Mac mac = new Mac(_configuration.Value.AccessKey, _configuration.Value.SecretKey);
                    //设置使用七牛云空间
                    string bucket = uploadModel.FileSpaceType.Equals("public") ? [email protected](',')[0] : [email protected](',')[0];
                    // 上传策略,参见
                    // https://developer.qiniu.com/kodo/manual/put-policy
                    PutPolicy putPolicy = new PutPolicy();
                    // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
                    putPolicy.Scope = bucket + ":" + fileName;
                    // 上传策略有效期(对应于生成的凭证的有效期)
                    putPolicy.SetExpires(3600);
                    putPolicy.ReturnBody = "$(key)";
                    // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
                    //putPolicy.DeleteAfterDays = 1;
                    // 生成上传凭证,参见
                    // https://developer.qiniu.com/kodo/manual/upload-token
                    string jstr  = putPolicy.ToJsonString();
                    string token = Auth.CreateUploadToken(mac, jstr);
                    Config.AutoZone(mac.AccessKey, bucket, false);
                    FormUploader fu     = new FormUploader();
                    HttpResult   result = await fu.UploadDataAsync(data, fileName, token);

                    if (result.Code == 200)
                    {
                        response.RetMsg  = "文件上传成功";
                        response.RetCode = StatesCode.success;
                        response.Data    = new
                        {
                            FileAddress = $"{[email protected](',')[1]}/{result.Text.Replace("\"", "")}"
                        };//文件地址
                    }
                }
                //服务器本地存储
                else if (uploadModel.StorageMethod.Equals("bendi"))
                {
                    var filePath = $@"{environment.ContentRootPath}\Upload\{uploadModel.ContentType}";
                    if (!Directory.Exists(filePath))
                    {
                        Directory.CreateDirectory(filePath);
                    }
                    using (var stream = new FileStream(Path.Combine(filePath, fileName), FileMode.CreateNew))
                    {
                        await formFile.CopyToAsync(stream);
                    }
                    response.RetMsg  = "文件上传成功";
                    response.RetCode = StatesCode.success;
                    response.Data    = new
                    {
                        FileAddress = new StringBuilder()
                                      .Append(Request.Scheme)
                                      .Append("://")
                                      .Append(Request.Host)
                                      .Append($"/{uploadModel.ContentType}/")
                                      .ToString() + fileName
                    };//文件地址
                }
            }
            return(Ok(response));
        }
Пример #25
0
        public ActionResult Edit()
        {
            var name  = Request.Form["name"];
            var id1   = Request.Form["gid"];
            var id2   = Request.Form["id"];
            var about = Request.Form["about"];

            if (name == null || name.Length < 1 || name.Length > 50)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "长度必须大于1个字符小于50字符"
                }));
            }

            var gid = 0;

            if (!int.TryParse(id1, out gid) || gid == 0)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "公众号不存在"
                }));
            }

            var id = 0;

            if (!int.TryParse(id2, out id) || id == 0)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "漫画不存在"
                }));
            }

            if (about == null || about.Length > 2000)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "漫画简介必须小于2000字符"
                }));
            }

            var logo = "";

            if (Request.Files.Count > 0 &&
                Request.Files[0].ContentLength > 0 &&
                new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower())))
            {
                var key   = QN.MHLogo(gid, id);
                var token = QN.GetUploadToken(QN.BUCKET, key);

                FormUploader fu     = new FormUploader();
                HttpResult   result = fu.UploadStream(Request.Files[0].InputStream, key, token);
                if (result.Code == 200)
                {
                    logo = key;
                }
            }

            Tab_MHCatalog m = new Tab_MHCatalog();

            m.F_Catalog = name;
            m.F_GZHId   = gid;
            m.F_Logo    = logo != "" ? logo : null;
            m.F_Id      = id;
            m.F_About   = about;

            int i = _ms.UpdateMH(m);

            if (i == 1)
            {
                return(View(new DWZJson {
                    statusCode = (int)DWZStatusCode.OK, message = "成功"
                }));
            }
            else
            {
                return(View(new DWZJson {
                    statusCode = (int)DWZStatusCode.ERROR, message = "失败"
                }));
            }
        }
Пример #26
0
        public string  QiniuUplodtest()
        {
            var accessKey = "HNXvIcHqurHJAEDnVI4v2_qDGDvVlAXhipa6uVX-";
            var secretKey = "pQOAZutqyXr679mnDclCnIeaHgF0w3U-eWDFZJsp";

            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac     = new Mac(accessKey, secretKey);
            string bucket  = "siyouku";
            string saveKey = "$(etag)";

            // 使用前请确保AK和BUCKET正确,否则此函数会抛出异常(比如code612/631等错误)
            Qiniu.Common.Config.AutoZone(accessKey, bucket, false);


            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope   = bucket;
            putPolicy.SaveKey = saveKey;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            string jstr  = putPolicy.ToJsonString();
            string token = Auth.CreateUploadToken(mac, jstr);

            try
            {
                string url  = "http://images2015.cnblogs.com/blog/208266/201509/208266-20150913215146559-472190696.jpg";
                var    wReq = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
                var    resp = wReq.GetResponse() as System.Net.HttpWebResponse;

                using (var stream = resp.GetResponseStream())
                {
                    //MemoryStream destination = new MemoryStream();
                    //stream.CopyTo(destination);
                    //var md5Val = destination.GetStreamMd5();

                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                    // 请使用FormUploader或者ResumableUploader的UploadStream方法
                    FormUploader fu     = new FormUploader();
                    var          result = fu.UploadStream(stream, null, token);
                    // Console.WriteLine(result);
                }
            }
            catch (Exception ex)
            {
                // Console.WriteLine(ex);
            }


            return("ok");
        }
Пример #27
0
        public ActionResult Add()
        {
            var id   = Request.Form["mhid"];
            var sort = Request.Form["sort"]; // 章节ID
            var name = Request.Form["name"];

            var        gid        = 0;
            Tab_User   u          = null;
            HttpCookie authCookie = Request.Cookies["a"]; // 获取cookie

            if (authCookie != null)
            {
                try
                {
                    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); // 解密
                    var user = SerializeHelper.FromJson <Tab_User>(ticket.UserData);
                    u = _us.GetUser(user.F_Name, user.F_Password);
                    if (u != null)
                    {
                    }
                    else
                    {
                        return(RedirectToAction("SignOut", "Home"));
                    }
                }
                catch (Exception ex)
                {
                    return(RedirectToAction("SignOut", "Home"));
                }
            }
            var gzh = _gzhs.GetGZH(u.F_Id);

            if (gzh != null)
            {
                gid = gzh.F_Id;
            }

            if (gid == 0)
            {
                // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "账号没有关联公众号"
                }));
            }

            int mhid = 0;

            if (id == null || !int.TryParse(id, out mhid) || mhid == 0)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "漫画ID无效"
                }));
            }

            int zjid = 0;

            if (sort == null || !int.TryParse(sort, out zjid) || zjid == 0)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "章节ID无效"
                }));
            }

            if (name == null || name.Length > 50)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "章节名称长度必须小于50字符"
                }));
            }

            var img = "";

            if (Request.Files.Count > 0 &&
                Request.Files[0].ContentLength > 0 &&
                new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower())))
            {
                var key   = QN.MHimg(gid, mhid);
                var token = QN.GetUploadToken(QN.BUCKET, key);

                FormUploader fu     = new FormUploader();
                HttpResult   result = fu.UploadStream(Request.Files[0].InputStream, key, token);
                if (result.Code == 200)
                {
                    img = key;
                }
            }
            else
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "请为章节内容添加图片"
                }));
            }

            Tab_MHImg m = new Tab_MHImg();

            m.F_Name   = name;
            m.F_Img    = img != "" ? img : null;
            m.F_MHId   = mhid;
            m.F_Sort   = zjid;
            m.F_UserId = u.F_Id;

            var i = _mhs.AddImg(m);

            if (i == 1)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.OK, message = "成功"
                }));
            }
            else if (i == 2)
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "章节重复"
                }));
            }
            else
            {
                return(View(new DWZJson()
                {
                    statusCode = (int)DWZStatusCode.ERROR, message = "失败"
                }));
            }
        }
Пример #28
0
    public override void Process()
    {
        byte[] uploadFileBytes = null;
        string uploadFileName  = null;

        if (UploadConfig.Base64)
        {
            uploadFileName  = UploadConfig.Base64Filename;
            uploadFileBytes = Convert.FromBase64String(Request[UploadConfig.UploadFieldName]);
        }
        else
        {
            var file = Request.Files[UploadConfig.UploadFieldName];
            uploadFileName = file.FileName;

            if (!CheckFileType(uploadFileName))
            {
                Result.State = UploadState.TypeNotAllow;
                WriteResult();
                return;
            }
            if (!CheckFileSize(file.ContentLength))
            {
                Result.State = UploadState.SizeLimitExceed;
                WriteResult();
                return;
            }

            uploadFileBytes = new byte[file.ContentLength];
            try
            {
                file.InputStream.Read(uploadFileBytes, 0, file.ContentLength);
            }
            catch (Exception)
            {
                Result.State = UploadState.NetworkError;
                WriteResult();
            }
        }

        Result.OriginFileName = uploadFileName;

        //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);
        //    Result.Url = savePath;
        //    Result.State = UploadState.Success;
        //}
        //catch (Exception e)
        //{
        //    Result.State = UploadState.FileAccessError;
        //    Result.ErrorMessage = e.Message;
        //}
        //finally
        //{
        //    WriteResult();
        //}

        try
        {
            string AccessKey = "nDdaH3SGk5NXCyQ8eZMsnRTApJndj0fOKy_f6Lix";
            string SecretKey = "HgxcM58TEplyx6H9CBJTbYDqpF4uXAKsiBp-W6u4";
            Mac    mac       = new Mac(AccessKey, SecretKey);
            // 上传文件名

            string key = DateTime.Now.ToString("yyyy/MM/dd") + "/" + CommonHelper.CalcMd5(uploadFileBytes) + Path.GetExtension(uploadFileName);
            // 存储空间名
            string Bucket = "renthouse2019";
            // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
            PutPolicy putPolicy = new PutPolicy();
            // 设置要上传的目标空间
            putPolicy.Scope = Bucket;
            // 上传策略的过期时间(单位:秒)
            putPolicy.SetExpires(3600);
            // 文件上传完毕后,在多少天后自动被删除
            putPolicy.DeleteAfterDays = 1;
            // 生成上传token
            string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            Qiniu.Storage.Config qiniuConfig = new Qiniu.Storage.Config();
            // 设置上传区域
            qiniuConfig.Zone = Zone.ZONE_CN_South;
            // 设置 http 或者 https 上传
            qiniuConfig.UseHttps      = true;
            qiniuConfig.UseCdnDomains = true;
            qiniuConfig.ChunkSize     = ChunkUnit.U512K;
            // 表单上传
            FormUploader target = new FormUploader(qiniuConfig);
            HttpResult   result = target.UploadData(uploadFileBytes, key, token, null);
            Result.Url   = key;
            Result.State = UploadState.Success;
        }
        catch (Exception e)
        {
            Result.State        = UploadState.FileAccessError;
            Result.ErrorMessage = e.Message;
        }
        finally
        {
            WriteResult();
        }
    }
Пример #29
0
        public override void Process()
        {
            byte[]         uploadFileBytes = null;
            string         uploadFileName  = null;
            var            accessKey       = "HNXvIcHqurHJAEDnVI4v2_qDGDvVlAXhipa6uVX-";
            var            secretKey       = "pQOAZutqyXr679mnDclCnIeaHgF0w3U-eWDFZJsp";
            HttpPostedFile file            = Request.Files[UploadConfig.UploadFieldName];
            Stream         myStream        = file.InputStream;

            uploadFileName = file.FileName;

            var fileLen = file.ContentLength;

            //// 读取文件的 byte[]
            byte[] bytes = new byte[fileLen];

            //  var temps= myStream.Read(bytes, 0, fileLen);

            if (!CheckFileType(uploadFileName))
            {
                Result.State = UploadState.TypeNotAllow;
                WriteResult();
                return;
            }
            if (!CheckFileSize(file.ContentLength))
            {
                Result.State = UploadState.SizeLimitExceed;
                WriteResult();
                return;
            }

            var md5value = Md5With32(bytes);

            if (_pictureRepository.Exist(md5value))
            {
                Result.Url   = _pictureRepository.GetBymd5(md5value).ImgName;
                Result.State = UploadState.Success;
                WriteResult();
                return;
            }
            var maxid   = _pictureRepository.GetMaxId();
            var imgname = "img" + (maxid + 1) + ".jpg";

            _pictureRepository.AddImg(new Picture()
            {
                ImgName    = imgname,
                CreateUser = "******",
                CreateTime = DateTime.Now,
                Md5Value   = md5value
            });


            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac    = new Mac(accessKey, secretKey);
            string bucket = "siyouku";
            //string saveKey = uploadFileName;
            string saveKey = imgname;

            // 使用前请确保AK和BUCKET正确,否则此函数会抛出异常(比如code612/631等错误)
            Qiniu.Common.Config.AutoZone(accessKey, bucket, false);


            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            putPolicy.Scope = bucket + ":" + saveKey;
            //putPolicy.Scope = bucket;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            // putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            string jstr  = putPolicy.ToJsonString();
            string token = Auth.CreateUploadToken(mac, jstr);

            try
            {
                // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                // 请使用FormUploader或者ResumableUploader的UploadStream方法
                FormUploader fu     = new FormUploader();
                var          result = fu.UploadStream(myStream, saveKey, token);
                var          x      = Newtonsoft.Json.JsonConvert.DeserializeObject <QiniuResult>(result.Text);
                Result.Url   = x.key;
                Result.State = UploadState.Success;
            }
            catch (Exception e)
            {
                Result.State        = UploadState.FileAccessError;
                Result.ErrorMessage = e.Message;
            }
            finally
            {
                WriteResult();
            }
        }
Пример #30
0
        public string Upload(Stream stream, string fileName)
        {
            StringBuilder sbAK = new StringBuilder(60);

            iniFileHelper.GetIniString("qiniu", "AK", "", sbAK, sbAK.Capacity);
            StringBuilder sbSK = new StringBuilder(60);

            iniFileHelper.GetIniString("qiniu", "SK", "", sbSK, sbSK.Capacity);

            Mac  mac  = new Mac(sbAK.ToString(), sbSK.ToString());
            Auth auth = new Auth(mac);

            StringBuilder sbZone = new StringBuilder(60);

            iniFileHelper.GetIniString("qiniu", "Zone", "", sbZone, sbZone.Capacity);
            // 目标空间名
            string bucket = sbZone.ToString();
            // 上传策略
            PutPolicy putPolicy = new PutPolicy();

            // 设置要上传的目标空间
            putPolicy.Scope = bucket;
            // 上传策略的过期时间(单位:秒)
            putPolicy.SetExpires(3600);
            // 文件上传完毕后,1天后自动删除
            putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证
            string        uploadToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            StringBuilder sbBucket    = new StringBuilder(60);

            iniFileHelper.GetIniString("qiniu", "Bucket", "", sbBucket, sbBucket.Capacity);
            Zone zone = Zone.ZONE_CN_East;

            switch (sbBucket.ToString())
            {
            case "ZONE_CN_East":
                zone = Zone.ZONE_CN_East;
                break;

            case "ZONE_CN_North":
                zone = Zone.ZONE_CN_North;
                break;

            case "ZONE_CN_South":
                zone = Zone.ZONE_CN_South;
                break;

            case "ZONE_US_North":
                zone = Zone.ZONE_US_North;
                break;

            default:
                zone = Zone.ZONE_AS_Singapore;
                break;
            }
            Config config = new Config()
            {
                //// 空间对应的机房
                Zone = zone,
                // 是否使用https域名
                UseHttps = true,
                // 上传是否使用cdn加速
                UseCdnDomains = true
            };
            FormUploader  upload   = new FormUploader(config);
            HttpResult    result   = upload.UploadStream(stream, fileName + ".jpg", uploadToken, null);
            StringBuilder sbDomain = new StringBuilder(60);

            iniFileHelper.GetIniString("qiniu", "Domain", "", sbDomain, sbDomain.Capacity);
            imgUrRL = sbDomain.Length > 0 ? sbDomain.ToString() : imgUrRL;
            compressMsg.PwdFileUrl = imgUrRL + fileName + ".jpg";
            doSendMsg(compressMsg);
            if (result.Code == 200)
            {
                return("Ok");
            }
            return("fall");
        }