asp.net上传图片问题,谢谢

wangjinchang 2008-11-21 04:48:40
asp.net中,我想想做一个上传图片的功能,用FileUpload控件上传,我想让它选择好图片后 根据路径 在Image里边 马上显示出来,还要根据我IMAGE控件的设定的大小来显示。 然后点提交按钮把图片路径和其他数据保存到数据库中! 请高手帮忙! 谢谢,做好能给点代码!
...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoumin0921 2008-11-21
  • 打赏
  • 举报
回复
if (FileUpload1.HasFile)//判断里FileUpload是否有此文件地址
{
string[] strSpil = FileUpload1.FileName.Split('.');//将此地址用.号进行分割(img/1.jpg)
string strEnd = strSpil[strSpil.Length - 1].ToLower();//得到后面得jpg
string[] strPic = new string[] { "jpg", "gif", "bmp", "png" };定义一个数组里面放文件格式
ArrayList arry = new ArrayList();
arry.AddRange(strPic); //定义一个可变数组,用于放文件格式
if (arry.Contains(strEnd))//判断这个数组中是否有(jpg)
{
Random rand = new Random();//定义义个随机数,为了防止你要上传得图片重名
String strName1 = DateTime.Now.ToString("yyyymmmddhhss") + rand.Next(100, 9999).ToString() + "." + strEnd;//得到不同得名字

string strFile = Server.MapPath("~/images/head/");//获取其相对地址
FileUpload1.SaveAs(strFile+"/"+strName1);//保存

Image1.ImageUrl = "~/images/head/" + strName1;//显示此图片
Image1.Visible = true;
}
else
{
Response.Write("<script>alert('不是标准的图片格式')</script>");
}
}
else
{
Response.Write("<script>alert('不存在此文件')</script>");
}
zoumin0921 2008-11-21
  • 打赏
  • 举报
回复
if (FileUpload1.HasFile)//判断里FileUpload是否有此文件地址
{
string[] strSpil = FileUpload1.FileName.Split('.');//将此地址用.号进行分割(img/1.jpg)
string strEnd = strSpil[strSpil.Length - 1].ToLower();//得到后面得jpg
string[] strPic = new string[] { "jpg", "gif", "bmp", "png" };定义一个数组里面放文件格式
ArrayList arry = new ArrayList();
arry.AddRange(strPic); //定义一个可变数组,用于放文件格式
if (arry.Contains(strEnd))//判断这个数组中是否有(jpg)
{
Random rand = new Random();//定义义个随机数,为了防止你要上传得图片重名
String strName1 = DateTime.Now.ToString("yyyymmmddhhss") + rand.Next(100, 9999).ToString() + "." + strEnd;//得到不同得名字

string strFile = Server.MapPath("~/images/head/");//获取其相对地址
FileUpload1.SaveAs(strFile+"/"+strName1);//保存

Image1.ImageUrl = "~/images/head/" + strName1;//显示此图片
Image1.Visible = true;
}
else
{
Response.Write("<script>alert('不是标准的图片格式')</script>");
}
}
else
{
Response.Write("<script>alert('不存在此文件')</script>");
}
wangjinchang 2008-11-21
  • 打赏
  • 举报
回复
jhdxhj
先谢谢了,怎么连个注释都没有啊! 看晕了都!还有别的方法吗?
jhdxhj 2008-11-21
  • 打赏
  • 举报
回复
protected void Button3_Click(object sender, EventArgs e)
{
if (DropDownList1.Text == "全部产品")
{
ShowMsg("请选择产品类别!");
return;
}
//上传图片
string filename = "";
if (FileUpload1.PostedFile.ContentLength != 0)
{
string fn = FileUpload1.PostedFile.FileName;
filename = GetRandomFileName();
filename += fn.Substring(fn.LastIndexOf("."));
if ((fn.Substring(fn.LastIndexOf(".") + 1).ToLower() == "jpg") || (fn.Substring(fn.LastIndexOf(".") + 1).ToLower() == "gif") || (fn.Substring(fn.LastIndexOf(".") + 1).ToLower() == "png") || (fn.Substring(fn.LastIndexOf(".") + 1).ToLower() == "bmp"))
{
FileUpload1.PostedFile.SaveAs(Server.MapPath(@"~\UpFiles") + "/" + filename);
MakeThumbnail(Server.MapPath(@"~\UpFiles") + "/" + filename, Server.MapPath(@"~\UpFiles\SmallImage") + "/" + filename, 200, 100, "W");
MakeThumbnail(Server.MapPath(@"~\UpFiles") + "/" + filename, Server.MapPath(@"~\UpFiles\BigImage") + "/" + filename, 800, 600, "W");
}
else
{
ShowMsg("图片格式必须为 .jpg、.gif、.png、.bmp其中之一!");
return;
}
}
else
{
ShowMsg("没有找到上传的图片!");
return;
}
File.Delete(Server.MapPath(@"~\UpFiles") + "/" + filename);
//向数据库中写入记录
DataTable dtKindSubID = BLL.SqlSelectWithSuffix(Entity.TbKindSub.tbName, " where " + Entity.TbKindSub.strSubKind + " = '" + DropDownList1.Text + "' and " + Entity.TbKindSub.strKindID + " = '01'");
if (dtKindSubID.Rows.Count > 0)
{
BLL.SqlInsert(Entity.TbRFIDProduct.tbName, BLL.GetList(Entity.TbRFIDProduct.dtCreate, Entity.TbRFIDProduct.strBigImage, Entity.TbRFIDProduct.strSynopsis, Entity.TbRFIDProduct.strGuid, Entity.TbRFIDProduct.strRemark, Entity.TbRFIDProduct.strSmallImage, Entity.TbRFIDProduct.strSubject, Entity.TbRFIDProduct.strType,Entity.TbRFIDProduct.strDetail), BLL.GetList(DateTime.Now, filename, txtSynopsis.Text.Trim(), Guid.NewGuid().ToString(), txtRemark.Text.Trim(), filename, txtSubject.Text.Trim(), dtKindSubID.Rows[0][Entity.TbKindSub.strSubKindID].ToString(),WebHtmlEditor1.Text.Trim()));
txtSynopsis.Text = "";
txtSubject.Text = "";
LabGuid.Text = "";
WebHtmlEditor1.Text = "";
txtRemark.Text = "";
UpdateGridView();
}
}
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
sunchaohuang 2008-11-21
  • 打赏
  • 举报
回复
用javascript脚本可以实现的
syc958 2008-11-21
  • 打赏
  • 举报
回复
好像只能在提交后才能显示吧?
sunchaohuang 2008-11-21
  • 打赏
  • 举报
回复
用javascript脚本可以实现的
lihongdian 2008-11-21
  • 打赏
  • 举报
回复
我blog里面有上传和下载任意byte[]到数据库的代码.
http://blog.csdn.net/lihongdian/archive/2008/10/23/3131990.aspx
还有用GDI+画图片的办法.

你可以参考一下
试着将图片变成byte[]存到数据库.取的时候还原.
syc958 2008-11-21
  • 打赏
  • 举报
回复
FileUpload有这个事件么???
ojekleen 2008-11-21
  • 打赏
  • 举报
回复
我想让它选择好图片后 根据路径 在Image里边 马上显示出来,还要根据我IMAGE控件的设定的大小来显示。
这样的话只能通过JS了,用JS获取你的FileUpload控件的值,把FileUpload的值给<img />
但是你的FileUpload控件的JS事件你就得自己试试有没有选中文件后的事件可触发,没玩过
根据我IMAGE控件的设定的大小来显
你只要设定好控件的高宽,应该就可以的了。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧