上传图片时,对图片名进行验证(是否含有中文或空格)
<form οnsubmit="return c(this)">
<input type=file name=ff>
<input type=submit>
</form>
<script>
function c(o)
{
str = o.ff.value.substr(o.ff.value.lastIndexOf("//")+1)
if(/[ /u4e00-/u9fa5]/.test(str))
{
alert("不得中文,空格")
return false
}
}
</script>
使用asp.net实现对数据库里的图片进行存取
方法一(使用流操作):
存图片:
数据库里image表中只有两个字段:一个是imageID,另一个是image(存放图片数据)是image类型
Stream stream = this.File1.PostedFile.InputStream;
int len = this.File1.PostedFile.ContentLength;
byte[] image = new byte[len];
int n = stream.Read(image, 0, len);
SqlConnection con = new SqlConnection("Data Source=.//SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
con.Open();
//---------------------------------------------------------------------------------------------------------------------------
SqlCommand cmd = new SqlCommand("insert into image values(@image)", con);
SqlParameter paramData = new SqlParameter("@image", SqlDbType.Image);
paramData.Value = image;
cmd.Parameters.Add(paramData);
//---------------------------------------------------------------------------------------------------------------------------
上面这段不能用sqlcommand cmd=new Sqlcommand("insert into image values('"+image+"')",con);
代替,会显示不出图片的,只显示system byte[]
cmd.ExecuteNonQuery();
con.Close();
取图片:
string sql = "SELECT image FROM image ";
SqlConnection connection = new SqlConnection("Data Source=.//SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
SqlCommand command = new SqlCommand(sql, connection);
connection.Open();
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
{
Response.ContentType = "image/jpeg";
Response.BinaryWrite((byte[])dr["image"]);//这种方法只能显示第一张图片(显示多张图片见下文方法)
}
connection.Close();
方法二:(用存取图片路径的方法)
其方法在服务器段建立一文件夹存图片(本文用UpFile)注意:UpFile文件夹要允许EveryOne用户有写入权限
数据库表有三个字段:id(自增),imagename,imageurl
存图片:
//上传图片并显示
string name = this.FileUpload1.PostedFile.FileName;//图片路径
if (name.Length != 0)
{
int start = name.LastIndexOf('//');
int last = name.LastIndexOf('.');
string imagename = name.Substring(start + 1, last - start - 1);//图片名 注意:文件名如果有空格或中文用上面的脚本进行验证
this.FileUpload1.PostedFile.SaveAs(Server.MapPath("UpFile") + "//" + imagename + ".jpg");
this.ImageButton1.ImageUrl = HttpContext.Current.Server.MapPath("UpFile") + "//" + imagename + ".jpg";
SqlConnection con = new SqlConnection("Data Source=.//SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("insert into imagedetail values('" + imagename + "','" + url + "')", con);
cmd.ExecuteNonQuery();
con.Close();
}
取图片:
直接取imageurl字段值赋予相应图片控件的imageurl属性,即可。
(读取多张图片的方法,待续。。)