You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.1 KiB
C#

2 months ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.Script.Serialization;
using System.Drawing;
namespace NetWorkHard.GlobalAshx
{
/// <summary>
/// AjaxFileUpdate 的摘要说明
/// </summary>
public class AjaxFileUpdate : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//context.Response.ContentType = "text/plain";
//context.Response.Charset = "utf-8";
HttpFileCollection files = context.Request.Files;
string DirectoryName = context.Request.QueryString["DirectoryName"];
string width = context.Server.UrlDecode(context.Request.QueryString["width"]);
string height = context.Server.UrlDecode(context.Request.QueryString["height"]);
if (string.IsNullOrEmpty(DirectoryName) == true) DirectoryName = "ServerCookies";
DirectoryName = System.AppDomain.CurrentDomain.BaseDirectory + DirectoryName;
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
if (files.Count > 0)
{
string ExtensionName = Path.GetExtension(files[0].FileName).ToLower();
string filename = Guid.NewGuid().ToString() + ExtensionName;
var model = new { FileName = filename, FileSize = files[0].InputStream.Length };
string jsonString = new JavaScriptSerializer().Serialize(model);
context.Response.Write(jsonString);
if (width != null && height != null)
{
string filepath = System.AppDomain.CurrentDomain.BaseDirectory + "ServerCookies/" + filename;
files[0].SaveAs(filepath);
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
Bitmap myBitmap = new Bitmap(filepath);
int thumbWidth = Convert.ToInt32(width);
int thumbHeight = Convert.ToInt32(height);
Image myThumbnail = myBitmap.GetThumbnailImage(thumbWidth, thumbHeight, myCallback, IntPtr.Zero);
Bitmap bmp1 = new Bitmap(myThumbnail);
string filepath2 = DirectoryName + "/" + filename;
bmp1.Save(filepath2, System.Drawing.Imaging.ImageFormat.Png);
bmp1.Dispose();
myBitmap.Dispose();
File.Delete(filepath);
////20240716新增 如果文件保存的信息不存在返回0告知
if (!File.Exists(filepath2))
{
context.Response.Clear();
context.Response.Write("0");
}
////20240716end
}
else
{
string filepath = DirectoryName + "/" + filename;
files[0].SaveAs(filepath);
////20240716新增 如果文件保存的信息不存在返回0告知
if (!File.Exists(filepath))
{
context.Response.Clear();
context.Response.Write("0");
}
////20240716end
}
context.Response.End();
}
else
{
context.Response.Write("0");
}
}
public bool ThumbnailCallback()
{
return false;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}