


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、webweb 应用中文件的存放方式解决方案应用中文件的存放方式解决方案解决方案解决方案 a a:将附件保存到数据库服务器上,用户访问任何一台web 服务器都是通过连接到数据库,从数据库中读取数据并传输到用户客户端。优点:可以避免文件系统的权限问题,文件全部放在数据库中,非常方便文件的查找、管理和备份。缺点:在数据库中保存和检索能力文件会给服务器端增加压力。 如果数据的量过大,速度上也存在弱势。技术储备:利用 fileupload 控件的 filebytes 属性来获取字节数组。数据表的设计字段名数据类型说明idint文件编号filenamevarchar(50)文件名filelengthint
2、文件大小filefitervarchar(20)文件扩展名filebytesimage文件字节数组将文件上传到数据库中protected void btup_click(object sender, eventargs e)if (fileup.hasfile)string strcon = server=.;database=test;uid=sa;pwd=;sqlconnection sqlcon = new sqlconnection(strcon);sqlcon.open();sqlcommand sqlcom = new sqlcommand();sqlcom.connection
3、= sqlcon;sqlcom.commandtext=insertvalues(filename,filelength,filefiter,filebytes);sqlcom.parameters.add(filename,sqldbtype.varchar).value = fileup.filename;sqlcom.parameters.add(filelength,sqldbtype.int).value = fileup.filebytes.length;sqlcom.parameters.add(filefiter,sqldbtype.varchar).value = path.
4、getextension(fileup.filename);sqlcom.parameters.add(filebytes,sqldbtype.image).value = fileup.filebytes;sqlcom.executenonquery();sqlcon.close();上传大文件a 中默认是不能提交大于 4m 的表单,超过这个值是会报异常,解决方法需要配置 web.config 文件。intofile.maxrequestlength 文件上传的最大字节数,以kb 为单位。.requestlengthdiskthreshold文件上传时缓存的大小。.executiontime
5、out文件上传的最大上传时间以秒为单位。注意点.system.io.getextension()提取指定路径的扩展名。.mappath()获取指定虚拟路径对应的服务器路径。.为了防止文件名相同,用当前时间作为文件名。解决方案解决方案 b b将文件保存在服务器的文件夹中。优点:速度上有优势,文件上传、下载通过链接读取文件。缺点:不便于文件的管理,比如将文件夹转移位置,或服务器硬盘满了,把文件放到其他地方,就得更新文件的链接。当然也不利于文件资料的备份等, 如果有多个 web 服务器,当用户访问其一服务器,却得不到其他服务器文件夹的文件。原理:用 saveas 方法把文件上传到指定的地方。prot
6、ected void btup_click(object sender, eventargs e)if (fileup.hasfile)/判断是否有文件literal lt = new literal();/定义一个 literal 用来显示脚本if (checkfiletype(fileup.filename)/检查上传文件的类型string filepath = /file/ + fileup.filename;fileup.saveas(mappath(filepath);/把文件上传到服务器的绝对路径上lt.text = alert(文件上传成功!);elselt.text = ale
7、rt(文件类型不正确!);this.controls.add(lt);/用来获取文件类型public bool checkfiletype(string filename)/获取文件的扩展名,前提要用这个方法必须引入命名空间iostring ext = path.getextension(filename);switch (ext.tolower()case .gif:return true;case .png:return true;case .jpeg:return true;case jpg:return true;default:return false;注意事项注意事项: 为了使文件
8、能上传到服务器,asp.net 页面关联的 window 账户必须有足够的权限来保存文件,设置权限的方法,在要上传的目录中点击右键选择安全-为 networkservice 或 asp.net 账户提供该文件夹的写权限。把上传的文件显示到 datalist 中string uppath = mappath(/file/);directoryinfo dir = new directoryinfo(uppath);datalist1.datasource = dir.getfiles();datalist1.databind();解决方案解决方案 c c采用上传到数据库与服务器文件夹结合的方法。
9、 即先把文件放到服务器一个特定的文件夹中,然后再上传到数据库中,这样当用户读取某个文件时,若文件夹中有这个文件,则直接读取,而不用访问数据库。若文件夹中没有这个文件, 则从数据库中读取,再放到这个文件夹中,这样, 当用户第二次访问同样一个文件,就不需访问数据库,而直接从文件夹中读取。优点:不仅有着文件夹方式的访问效率,而且也有数据库存放方式的便于管理等优势。缺点:上传到数据库的话还是存在速度的上的弱势,也会造成数据冗余。解决方案解决方案 d d针对方案针对方案 b b 将文件上传到服务器文件夹, 在多台 web 服务器上开启文件同步的服务, 用户上传了附件到一台服务器上,通过文件同步服务将所有
10、新上传的附件同步其他所有web服务器上,这样就会在每台服务器上保存一个附件的副本, 访问其一服务器,能够获取其他服务器的文件,但是及其浪费空间,而且文件的同步还存在延时和失败的情况。解决方案解决方案 e e文件上传到服务器文件夹, 用数据库来进行管理, 把文件上传到服务器的同时, 将此文件的名字,长度,存储的服务器名称,路径等信息保存到数据库。数据库保存的是路径,通过读取数据库里的路径地址查到要找的文件优点:非常方便文件的查找、管理和备份。数据库的负担也不重,数据量过大时,存储速度也很快。如果换服务器时,只要在数据库里修改名称就可以。缺点:备份和恢复数据的时候比较麻烦,同时还要解决好,删除数据
11、库的文件记录,是否还要删除文件本身。文件读取的时候还要把相对地址转为绝对地址。案例:购物网站商品的信息数据库, 数据库一张表, 后台上传图片后,图片会保存在服务器的文件夹下,图片的路径保存在商品信息表中。 最后,图片在前台从数据库的路径读取服务器的图片显示出来。技术储备:利用 fileupload 控件protected void button1_click(object sender, eventargs e)/判断上传格式是否符合bool flag = false;if (fileuploadpic.hasfile)/获取当前文件的格式string fileextension = syst
12、em.io.path.getextension(fileuploadpic.filename).toupper();/只允许上传格式string allowextension = .jpg, .gif, .png, .bmp, .jpeg,.swf ;for (int i = 0; i allowextension.length; i+)if (fileextension = allowextensioni)flag = true;/如果符合上传模式if (flag)string name = fileuploadpic.filename; /获取文件名string newname = ses
13、sionphotos1.tostring() + _ + name; /重命名文件名,以免跟文件夹现有的文件重名string ipath = server.mappath(photos) + + newname; /指定文件在服务器上的保存路径datetime date = system.datetime.now; /获取当前时间fileuploadpic.saveas(ipath);/ 将选定在控件上的文件保存到服务器指定的目录string sql = insert into bookphoto(bookimage) values( + ipath + );/把文件在服务器上的路径保存到数据/ 调用数据库的类,添加到数据库中。db db = new db();sqlconnection cnn = db.connectioncnnstring1;int i = db.addtable(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年纺织品检验员考后总结试题及答案
- 塔吊施工考试题及答案
- 广告设计师证书考试传播媒介选择考题及答案
- 团课能力测试题及答案
- 康复考试题及答案
- 广告设计中的用户心理因素分析试题及答案
- 在线学考试试题及答案
- 快消品行业中的设计策略与应用案例试题及答案
- 政协遴选考试题及答案
- 社会责任感对广告设计的影响试题及答案
- 形势与政策电气 个人答案
- PHOTOSHOP图形图像处理课程标准
- 国开电大《Java语言程序设计》形考任务三答案
- 2022年全国大学生英语竞赛C类试题
- 装饰、装修施工方案
- 远盛水工重力坝辅助设计系统用户使用手册
- 矿井瓦斯抽采
- 立法学完整版教学课件全套ppt教程
- 五年级下册科学说课课件 -1.2 沉浮与什么因素有关 |教科版 (共28张PPT)
- 通用城实景三维数据生产项目技术设计书
- 毕业设计(论文)-N402—1300型农用拖拉机履带底盘的设计
评论
0/150
提交评论