我有asp:FileUpload,我想在网站上的Images forlder中将所有可接受格式的所有上传图像保存为png图像,我的上传代码为:
protected void btnSave_Click(object sender, EventArgs e)
{
if (fup2.HasFile)
{
Regex reg = new Regex(@"(?i).*\.(gif|jpe?g|png|tif)$");
string uFile = fup2.FileName;
if (reg.IsMatch(uFile))
{
string saveDir = Server.MapPath(@"~/Images/");
string SavePath = saveDir + uFile;
fup2.SaveAs(SavePath);
}
else
{
Response.Write("Error");
}
}
}
我也尝试过使用
var tempImg = Image.FromFile(Server.MapPath(@"~/Images/"));
tempImg.Save("a.tiff", ImageFormat.png);
不断抛出file not found exception
有任何新想法吗?
答案 0 :(得分:1)
使用Bitmap.FromStream
。类似的东西:
using System.Drawing;
protected void btnSave_Click(object sender, EventArgs e)
{
if (fup2.HasFile)
{
Regex reg = new Regex(@"(?i).*\.(gif|jpe?g|png|tif)$");
string uFile = fup2.FileName;
if (reg.IsMatch(uFile))
{
string saveDir = Server.MapPath(@"~/Images/");
string SavePath = saveDir + Path.GetFileName(uFile) + ".png";
Bitmap b = (Bitmap)Bitmap.FromStream(fup2.PostedFile.InputStream);
b.Save(SavePath, ImageFormat.Png);
}
else
{
Response.Write("Error");
}
}
}
答案 1 :(得分:0)
Image.FromFile
- > Save
应该可以做到这一点,但我不知道你是如何使用正确的路径的 - 你只需要指向目录而不是实际文件,而不是调用FromFile
作为旁注,在Web处理线程上进行此处理并不是一个好主意,但对于小负载,它可以工作。