migrate to new git
This commit is contained in:
223
web/admin/filemanager/upload.aspx.cs
Normal file
223
web/admin/filemanager/upload.aspx.cs
Normal file
@@ -0,0 +1,223 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
|
||||
|
||||
public partial class admin_filemanager_upload : System.Web.UI.Page
|
||||
{
|
||||
//限制寬度尺寸不得超過1024
|
||||
const double maxSize = 1024;
|
||||
string scc = ConfigurationManager.AppSettings["shopCarCode"].ToString();
|
||||
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
MyWeb.admin admin = new MyWeb.admin();
|
||||
if (MyWeb.admin.chkAdmIP && (MyWeb.admin.chkTwIP || MyWeb.admin.chkAdmIP_Enable) && admin.isLoign())
|
||||
{
|
||||
if (admin.info.login_ip != MyWeb.admin.MyIP)
|
||||
{
|
||||
Response.Clear();
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
MyWeb.fileSystem fileSystem = new MyWeb.fileSystem();
|
||||
HttpPostedFile jpeg_image_upload = Request.Files["Filedata"];
|
||||
string up_path = Server.MapPath("~/upload/" + Convert.ToString(Request["dirname"]).Replace("../", ""));
|
||||
DirectoryInfo dir = new DirectoryInfo(up_path);
|
||||
if (!dir.Exists) { dir.Create(); }
|
||||
|
||||
string savePath = up_path + (up_path.Substring(up_path.Length - 1, 1) != "/" ? "/" : "") + jpeg_image_upload.FileName.Replace(" ", "_");
|
||||
|
||||
int re = 0;
|
||||
while (true)
|
||||
{
|
||||
FileInfo fInfo = new FileInfo(savePath);
|
||||
if (fInfo.Exists)
|
||||
{
|
||||
string fname = jpeg_image_upload.FileName.Replace(" ", "_");
|
||||
re++;
|
||||
string[] f = fname.Split('.');
|
||||
fname = f[0] + "(" + re.ToString() + ")" + (f.Length > 1 ? "." + f[1] : "");
|
||||
savePath = up_path + (up_path.Substring(up_path.Length - 1, 1) != "/" ? "/" : "") + fname;
|
||||
}
|
||||
else { break; }
|
||||
}
|
||||
|
||||
if (fileSystem.isPhoto(jpeg_image_upload.FileName))
|
||||
{
|
||||
string[] n = jpeg_image_upload.FileName.Split('.');
|
||||
System.Drawing.Image Bm = new System.Drawing.Bitmap(jpeg_image_upload.InputStream);
|
||||
|
||||
foreach (PropertyItem pi in Bm.PropertyItems)
|
||||
{
|
||||
// orientation tag id is 274
|
||||
if (pi.Id == 274)
|
||||
{
|
||||
switch (pi.Value[0])
|
||||
{
|
||||
case 2:
|
||||
Bm.RotateFlip(RotateFlipType.RotateNoneFlipX);
|
||||
break;
|
||||
case 3:
|
||||
Bm.RotateFlip(RotateFlipType.Rotate180FlipNone);
|
||||
break;
|
||||
case 4:
|
||||
Bm.RotateFlip(RotateFlipType.RotateNoneFlipY);
|
||||
break;
|
||||
case 5:
|
||||
Bm.RotateFlip(RotateFlipType.Rotate90FlipX);
|
||||
break;
|
||||
case 6:
|
||||
Bm.RotateFlip(RotateFlipType.Rotate90FlipNone);
|
||||
break;
|
||||
case 7:
|
||||
Bm.RotateFlip(RotateFlipType.Rotate270FlipX);
|
||||
break;
|
||||
case 8:
|
||||
Bm.RotateFlip(RotateFlipType.Rotate270FlipNone);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
double newWidth = Bm.Width;
|
||||
double newHeight = Bm.Height;
|
||||
if (Bm.Width > maxSize)
|
||||
{
|
||||
newWidth = maxSize;
|
||||
newHeight = maxSize / Bm.Width;
|
||||
newHeight = newHeight * Bm.Height;
|
||||
}
|
||||
/*if (Bm.Width > Bm.Height)
|
||||
{
|
||||
if (Bm.Width > maxSize)
|
||||
{
|
||||
newWidth = maxSize;
|
||||
newHeight = maxSize / Bm.Width;
|
||||
newHeight = newHeight * Bm.Height;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Bm.Height > maxSize)
|
||||
{
|
||||
newHeight = maxSize;
|
||||
newWidth = maxSize / Bm.Height;
|
||||
newWidth = newWidth * Bm.Width;
|
||||
}
|
||||
}*/
|
||||
|
||||
if (newWidth > 0 & newHeight > 0)
|
||||
{
|
||||
string picType = n[n.Length - 1].ToLower();
|
||||
if (picType == "jpg") { picType = "jpeg"; }
|
||||
System.Drawing.Image New_Image = new Bitmap((int)newWidth, (int)newHeight);
|
||||
Graphics ObjGraphics = Graphics.FromImage(New_Image);
|
||||
|
||||
MyWeb.global global = new MyWeb.global();
|
||||
|
||||
ObjGraphics.InterpolationMode = global.InterpolationMode;
|
||||
ObjGraphics.SmoothingMode = global.SmoothingMode;
|
||||
ObjGraphics.CompositingQuality = global.CompositingQuality;
|
||||
|
||||
if (picType == "png")
|
||||
{
|
||||
ObjGraphics.Clear(Color.Transparent); //清空Graphics, 以透明色填充
|
||||
}
|
||||
else
|
||||
{
|
||||
ObjGraphics.Clear(Color.White); //清空Graphics, 以白色填充
|
||||
}
|
||||
|
||||
//在指定位置按指定大小繪制原圖片的片段
|
||||
ObjGraphics.DrawImage(Bm, new Rectangle(0, 0, (int)newWidth, (int)newHeight), new Rectangle(0, 0, Bm.Width, Bm.Height), GraphicsUnit.Pixel);
|
||||
|
||||
|
||||
if (fileSystem.WatermarkMode == "2")
|
||||
{
|
||||
string FileNameAndPath = HttpContext.Current.Server.MapPath(fileSystem.WatermarkPath);
|
||||
System.Drawing.Image Watermark_Image = System.Drawing.Image.FromFile(FileNameAndPath);
|
||||
int w_Width = Convert.ToInt32(Math.Round(Convert.ToDouble(newWidth) * 0.8));
|
||||
int w_Height = Convert.ToInt32(Watermark_Image.Height * (Convert.ToDouble(w_Width) / Convert.ToDouble(Watermark_Image.Width)));
|
||||
int w_myX = ((int)newWidth - w_Width) / 2; //浮水印水平置中
|
||||
int w_myY = ((int)newHeight - w_Height) / 2 + w_Height; //浮水印水平垂直置中向下偏移一個高度
|
||||
var colorMatrix = new ColorMatrix();
|
||||
colorMatrix.Matrix33 = (float)Convert.ToSingle(fileSystem.WatermarkPct);
|
||||
var imageAttributes = new ImageAttributes();
|
||||
imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
|
||||
ObjGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
|
||||
ObjGraphics.DrawImage(
|
||||
Watermark_Image,
|
||||
new Rectangle(w_myX, w_myY, w_Width, w_Height),
|
||||
0,
|
||||
0,
|
||||
Watermark_Image.Width,
|
||||
Watermark_Image.Height,
|
||||
GraphicsUnit.Pixel,
|
||||
imageAttributes);
|
||||
}
|
||||
|
||||
//下方設定使JPG質量
|
||||
EncoderParameters EPS = new EncoderParameters();
|
||||
EncoderParameter EP = new EncoderParameter(Encoder.Quality, global.ImageCompressionQuality);
|
||||
EPS.Param[0] = EP;
|
||||
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
|
||||
ImageCodecInfo ICI = null;
|
||||
foreach (ImageCodecInfo codec in codecs)
|
||||
{
|
||||
if (codec.MimeType == "image/" + picType)
|
||||
{
|
||||
ICI = codec;
|
||||
break;
|
||||
}
|
||||
}
|
||||
New_Image.Save(savePath, ICI, EPS);
|
||||
New_Image.Dispose();
|
||||
ObjGraphics.Dispose();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
jpeg_image_upload.SaveAs(savePath);
|
||||
}
|
||||
Bm.Dispose();
|
||||
}
|
||||
else if (fileSystem.isAllowed(jpeg_image_upload.FileName))
|
||||
{
|
||||
jpeg_image_upload.SaveAs(savePath);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// If any kind of error occurs return a 500 Internal Server error
|
||||
Response.StatusCode = 500;
|
||||
Response.Write("An error occured");
|
||||
Response.End();
|
||||
}
|
||||
finally
|
||||
{
|
||||
Response.End();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Response.Clear();
|
||||
Response.StatusCode = 404;
|
||||
Response.End();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user