/// <summary>
        /// 图片上传地址
        /// </summary>
        /// <param name="maxWidth">最大宽度</param>
        /// <param name="maxHeight">最大高度</param>
        /// <param name="identifying">标识</param>
        /// <param name="urlStr">地址</param>
        /// <returns></returns>
        public ActionResult ImageUploadToAli()
        {
            string    _SImage = string.Empty;
            Exception ex      = null;

            if (Request.Files.Count > 0)
            {
                var Imgfile = Request.Files[0];
                try
                {
                    var ext           = Path.GetExtension(Imgfile.FileName);
                    var client        = new WcfClinet <IFileUpload>();
                    var ImageFilePath = swc.WebConfigurationManager.AppSettings["UploadDoMain_image"] + Guid.NewGuid().ToString() + ext;
                    _SImage = ImageFilePath + Guid.NewGuid().ToString() + ext;
                    var buffer = new byte[Imgfile.ContentLength];
                    Imgfile.InputStream.Read(buffer, 0, buffer.Length);

                    var result_2 = client.InvokeWcfClinet(w => w.UploadImage(_SImage, buffer, 0, 0));
                }
                catch (Exception error)
                {
                    ex = error;
                }
            }
            return(Json(new
            {
                SImage = swc.WebConfigurationManager.AppSettings["UploadDoMain"] + _SImage,
                Msg = ex == null ? "上传成功" : ex.Message
            }, "text/html"));
        }
Exemplo n.º 2
0
        public JsonResult UploadImage(string path, string name, string key)
        {
            int       result   = 0;
            string    imageUrl = string.Empty;
            Exception ex       = null;

            if (Request.Files.Count > 0)
            {
                var Imgfile = Request.Files[0];
                try
                {
                    var exttension = Path.GetExtension(Imgfile.FileName);
                    name     = (name ?? Guid.NewGuid().ToString()) + exttension;
                    imageUrl = path + name;
                    var client = new WcfClinet <IFileUpload>();

                    var buffer = new byte[Imgfile.ContentLength];
                    Imgfile.InputStream.Read(buffer, 0, buffer.Length);

                    result = client.InvokeWcfClinet(w => w.UploadImage(imageUrl, buffer, 0, 0));
                }
                catch (Exception error)
                {
                    ex = error;
                }
            }
            return(Json(new
            {
                Url = imageUrl,
                Name = name,
                Msg = result > 0 ? "上传成功" : ex?.Message,
                Key = key
            }));
        }
        public async Task <JsonResult> BatchSaveByExcel()
        {
            JsonResult jr = new JsonResult();

            if (Request.Files.Count == 0)
            {
                jr.Data = new { code = 0, msg = "未选择Excel文件" };
                return(jr);
            }
            var    file     = Request.Files[0];
            var    ext      = System.IO.Path.GetExtension(file.FileName);
            string fileType = ".xls,.xlsx";

            if (!fileType.Contains(ext))
            {
                jr.Data = new { code = 0, msg = "文件格式不正确" };
                return(jr);
            }
            int    filesize    = file.ContentLength;
            string fileName    = System.IO.Path.GetFileNameWithoutExtension(file.FileName) + HttpContext.User.Identity.Name + DateTime.Now.ToString("yyyyMMddhhmmss") + ext;
            var    virtualPath = "/product/excel/";
            var    domainPath  = swc.WebConfigurationManager.AppSettings["DoMain_news"];
            var    serverPath  = virtualPath + fileName;//http://file.tuhu.test/vehicletype/excel/aaa.xls
            string savePath    = domainPath + serverPath;

            byte[] input      = new byte[filesize];
            var    fileStream = file.InputStream;

            fileStream.Read(input, 0, filesize);

            var          client = new WcfClinet <IFileUpload>();
            var          result = client.InvokeWcfClinet(w => w.UploadFile(serverPath, input));
            var          table  = new DataTable();
            XSSFWorkbook wb1;
            HSSFWorkbook wb2;

            //var sw = new Stopwatch();


            var bytes = StreamToBytes(file.InputStream);

            using (MemoryStream memstream = new MemoryStream(bytes))
            {
                //file.InputStream.CopyTo(memstream);
                //memstream.Position = 0; // <-- Add this, to make it work

                if (fileName.EndsWith(".xlsx"))
                {
                    wb1   = new XSSFWorkbook(memstream);
                    table = GetExcelData(wb1);
                }
                else if (fileName.EndsWith(".xls"))
                {
                    wb2   = new HSSFWorkbook(memstream);
                    table = GetExcelData(wb2);
                }
            }
            Func <string, InstallmentType?> gettype = v =>
            {
                if (string.Equals(v?.Trim(), "途虎"))
                {
                    return(InstallmentType.Tuhu);
                }
                if (string.Equals(v?.Trim(), "用户"))
                {
                    return(InstallmentType.User);
                }
                return(null);
            };

            if (table != null && table.Rows.Count > 0)
            {
                if (table.Rows.Count > 500)
                {
                    jr.Data = new { code = 0, msg = "一次只能上传最多500条配置" };
                    return(jr);
                }
                var models = table.AsEnumerable().Select(r =>
                {
                    var three  = gettype(r[1]?.ToString());
                    var six    = gettype(r[2]?.ToString());
                    var twelve = gettype(r[3]?.ToString());
                    if (three != null && six != null && twelve != null)
                    {
                        var model = new TireInstallmentModel()
                        {
                            PID               = r[0]?.ToString(),
                            ThreePeriods      = three.Value,
                            SixPeriods        = six.Value,
                            TwelvePeriods     = twelve.Value,
                            IsInstallmentOpen = true
                        };
                        return(model);
                    }
                    return(null);
                });

                int errorcount   = models.Where(x => x == null).Count();
                int successcount = 0;
                var results      = Parallel.ForEach <TireInstallmentModel>(models,
                                                                           new ParallelOptions()
                {
                    MaxDegreeOfParallelism = 10
                },
                                                                           async(x) =>
                {
                    if (await CreateOrUpdateTireInstallmentAsync(x))
                    {
                        successcount++;
                    }
                    else
                    {
                        errorcount++;
                    }

                    System.Threading.Thread.Sleep(300);
                }
                                                                           );
                jr.Data = new { code = 1, msg = $"成功导入{successcount}个,失败:{errorcount}个" };
            }
            return(jr);
        }