二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
来源:互联网 发布:电梯优化问题 编辑:程序博客网 时间:2024/06/06 13:20
这几天自己在实现个人资料修改信息这块,首先当用户注册后并不能来的把所有详细信息都填写完整,所有这块需要用户通过修改用户上传自己的头像,首先系统会默认加载一个头像,如图:
现在系统是默认的,我点击修改资料的时候需要查出这个图片,再把我的头像传上去,即修改即可。
代码很简单(自己考虑的时候一直受到思维限制,使用js来实现(绕弯了)并没有会想如此简单(建新指导))
前台:
<div title="修改头像" style="overflow: auto; padding: 20px;"> <%--<form id="Form2" method="post" runat="server">--%> <div id="localImag" style="width: 350px; float: left"> <img id="preview" src="SearchPhoto.ashx" />通过调用一般处理程序绑定头像 </div> <div style="width: 100px; float: left"> <asp:FileUpload ID="FileUpload1" runat="server" onchange="javascript:setImagePreview(this,localImag,preview);" /> </div>
一般处理程序:
////绑定数据源,将信息添加到Category StringBuilder strWhere = new StringBuilder(); string UserID = context.Session["ID"].ToString(); userInfo = userinfobll.GetEntity(UserID); string HeadImg = userInfo.HeadImg;//获取头像地址(我用的是相对路径)string img = context.Server.MapPath(HeadImg);//把头像地址转换为绝地地址(受下面的要求) FileStream aFile = new FileStream(img, FileMode.OpenOrCreate, FileAccess.ReadWrite); // 以二进制方式读文件 BinaryReader brMyfile = new BinaryReader(aFile); // 创建一个二进制数据流读入器,和打开的文件关联 brMyfile.BaseStream.Seek(0, SeekOrigin.Begin); // 把文件指针重新定位到文件的开始 byte[] photo = brMyfile.ReadBytes(Convert.ToInt32(aFile.Length.ToString())); //获取照片的字节数组 brMyfile.Close(); // 关闭以上new的各个对象 context.Response.BinaryWrite(photo);//把图片的路径返回界面
这样轻松的根据数据库中的路径加载相应的图片,修改头像就是很简单了。(部分核心代码--贺刚博客分享)
if (this.FileUpload1.FileContent.Length >= 200000)//限制大小 { Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript' defer>alert('照片不能超过200KB!');</script>"); return; } String fullfilename = this.FileUpload1.PostedFile.FileName; //获取图片的绝对路径 String filename = fullfilename.Substring(fullfilename.LastIndexOf("\\") + 1);//获取图片的名称 String type = filename.Substring(filename.LastIndexOf(".") + 1).ToLower(); //获取图片的格式(类型) String Rename = Session["UserName"] + "_" + DateTime.Now.ToString("yyyyMMddHHmmss"); //用户名+时间命名,避免上传图片命名重复 string varToDirectory = Request.PhysicalApplicationPath + "touxiang"; //专门存放用户相册的文件 //判断文件是否存在,不存在则创建该文件 if (!Directory.Exists(varToDirectory)) { Directory.CreateDirectory(varToDirectory); } if (type == "jpg" || type == "png" || type == "jpeg" || type == "gif") { userInfo.UserID = Int32.Parse(Session["UserID"].ToString()); userInfo.HeadImg = "touxiang/" + Rename + "." + type; //数据库中中图片的路径 FileUpload1.SaveAs(Server.MapPath("touxiang") + "/" + Rename + "." + type);//将图片以相对路径保存,并以当前时间命名
总结
遗留下的问题:
1:如果直接使用一般处理程序返回的是字符串(头像的相对地址),不能正常显示图片,在浏览器的调试下把相对地址拷过去可以正常显示图片,为什么返回的是二进制流就可以读取头像,二者的区别是什么呢?请高手指导。
这段时间做系统,遇到的问题越来越多,见识也越多越广,好多知识等着去深刻理解、运用,打破思维的限制,大家共同努力啊。
- 二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
- 善良公社项目总结
- 做善良公社项目的经历和感受——善良公社
- jquery easyui datagrid 分页实现---善良公社项目
- 基于easyui框架中input 类型的checkbox拼接成字符串存入数据库和读取选中---善良公社项目
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
- Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
- JSON 的数据转换格式(DataTable或DataSet) -善良公社项目
- Asp.Net中使用JQueryEasyUI--善良公社项目
- 个人头像上传
- 个人头像上传
- Repeater的真分页——善良公社
- php上传二进制数据流
- php上传二进制数据流
- JavaScript (XMLHttpRequest) 读取二进制数据流
- 善良公社项目总结之如何从前台向后台传输数据
- iOS应用上传个人头像
- JQueryEasyUI框架下的combobox的取值和绑定——善良公社
- Linux ALSA声卡驱动之四:Control设备的创建
- 用抽象类设计计算二维图形面积的程序,在基类TDshape中设计纯虚函数area()和printName().are()用于计算图形的几何面积,printName()用于打印输出几何图形的类名
- linux shell编程指南第十章------sed 用法介绍2
- linux学习笔记--鸟哥的linux私房菜第1章 Linux是什么
- 时间序列分析之二:基本模型
- 二进制数据流方式实现 个人头像的读取、上传、修改------善良公社项目
- XMPP SI FileTransfer服务传输文件过程详解
- 时间序列分析之三:参数估计
- Android使用Animation技巧讲解
- 一些杂七杂八的问题
- C,C++可变长参数实现
- 时间序列分析之四:模型定阶
- 回调设计模式
- 时间序列分析之五:几种建模方法