上传头像先在页面显示图像,然后保存确定才真正保存到数据库里。请问二进制的照片如何传参到另外的页面?
在add.aspx页面中
protected void Button1_Click(object sender, EventArgs e)
{
string name = FileUpload1.PostedFile.FileName;
string type = name.Substring(name.LastIndexOf(".") + 1);
FileStream fs = File.OpenRead(name);
byte[] content = new byte[fs.Length];
fs.Read(content, 0, content.Length);
fs.Close();
if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
{
img.imageurl=" imag.aspx?s_img='"+content+"' ";
}
}
imag.aspx页面中接收二进制照片
byte[] filebyep =encoding.unicode.getbytes(request.querystring("s_img").tostring());
如何传值? 都显示不图片
同样,不建议把图片直接存放在数据库中,可以把图片的地址存放进去
建议楼主不要传二进制。容量大了 会接收不到。 建议在服务器上暂存图片 传图片路径
苦逼孩子还木下班啊,我马上下班了,,
我本来也是这么想的,传图片路径,但是多了会不会压力太大?
网上见过不少用二进制写入流保存到数据库的 如果按你说的容量大了接收不到 就在上传的时候控制下像素分辨率什么的不知道会不会好点
@心态要好:放到数据,下载,查看的时候都不方便,如何还要备份,就太大了啊
@chenping2008: 而且还有个问题 也不建议你存到DB中。 在DB里面的话 大概 100 200笔资料 查询就非常之慢了。 慢的非常接受不了
@sym_cn: 不管是差一条 还是差几条 都特别慢。
@chenping2008: 以受害者的身份 强烈建议楼主 如果没什么特殊的需求 保存在硬盘里面就好了 不要搞到DB里面。
@心态要好: 六点才下班啊,你以为北方的朝九晚五啊
苦逼孩子 啊……
你给我讲一讲数据库的本质是什么???
不管是图片还是字符 最终都要保存到硬盘上,你为啥非要把图片序列化成“字符”以后再像“字符”一样保存在硬盘上呢???
你为啥就不能让它直接保存在硬盘上呢???
嗯???????
1 <tr> 2 <td>图片:</td> 3 <td> 4 <input type="file" name="txtprojectImg" /></td> 5 </tr> 6 7 HttpPostedFile img = Request.Files["txtprojectImg"]; 8 9 string url = "projectimages/" + Guid.NewGuid().ToString() + img.FileName; 10 string ext = Path.GetExtension(img.FileName).ToLower(); 11 if (img != null) 12 { 13 if (ext == ".jpg" || ext == ".png" || ext == ".jpeg" || ext == ".gif") 14 { 15 img.SaveAs(Server.MapPath(url)); 16 } 17 else 18 { 19 Page.ClientScript.RegisterStartupScript(this.GetType(), "error", "<script type='text/javascript'>alert('图片格式不正确,请您检查')</script>"); 20 return; 21 } 22 } 23 24 楼主可以看一下这段代码,是将图片的路径保存在数据库中,而将图片保存在projectimages/这个文件下面,如何读取就很简单了!
还是建议存储物理文件比较好。
建议不要放二进制,一是数据量大,二是不一定所有的数据库都支持这样存储,扩展性不好
一般是存图片路径,你担心图片多了存路径有压力的问题 ,完全可以不用考虑,因为你图片一多,存二进制的压力更更更大
头像图片根据表最大id生成id号,然后压缩图片存硬盘上,id号存数据库表里。同时你可以把图片文件夹分组,可按照性别,地区,年龄等,这样根据图片di从文件夹找也快,然后解压缩还原头像。