- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件上传的原理
文件上传表单 首先需要编写一个能提供文件上传功能的表单,程序如下所示:Form action=upload.jsp method=post enctype=multipart/form-data上传文件:
Input type=file name=file1brinput type=submit name=upload value=上传/form 其中,enctype参数用来设置表单的MIME编码方式,在进行文件(或同时包含文本框)上传时,必须将其属性设置为multipart/form-data;
2、上传文件格式分析 分析浏览器上显示的上传文件的二进制代码,发现代码包括四个部分(若同时上传多个文件或文本框,则代码按上传的先后次序排列,格式相同),每一部分的内容是用回车换行符号来进行分隔的: 1)第一部分(起始标志) -----------------------------7d329631b04d4 2)第二部分(文件说明)Content-Disposition: form-data; name=file1; filename=C:\Documents and Settings\Administrator\My Documents\Invitation.doc Content-Type: application/msword 在此,我们可以获得上传文件的文件名称及绝对路径,也可以获得文件类型。这些信息是正确保存文件所不可缺少的。 3)第三部分(文件内容) 即文件的二进制内容,略。 4)第四部分(结束标志)-----------------------------7d329631b04d4 结合第一部分和第四部分的内容来看,-----------------------------7d329631b04d4(每次上传,数值都不一样)起到了分割符的作用,它标志着一段数据(当有多个上传内容时)的开始和结束。从保存文件所需要的信息来讲,我们首先需要从第二部分数据的filename中获得文件名称,然后需要正确定位文件的起始位置,最后利用ASP技术将二进制文件用本来的文件名保存即可。若同时上传多个内容(如多个文本框和文件),也是按同样的方法处理,每部分的内容都包含在分割符之中,只是文本框和文件的表现形式稍有不同,这可以通过具体分析其二进制代码来了解。
==================================Struts2上传文件增加commons-fileupload-1.2.jar和commons-io-1.3.1.jar到lib
===== jsp=====
form 的 enctype 设置为 multipart/form-data
============== UploadAction==============private String username;private String password;private File file; // 对应文件域private String fileFileName; // 前面的File属性的名字 + FileName(固定的)private String fileContent; // 前面的File属性的名字 + Content
// setter... getter...
String execute() throws Exception {
InputStream is = new FileInputStream( file );
String root = ServletActionContext.getRequest().getRealPath(/upload);
File destFile = new File(root,this.getFileFileName());
OutputStream os = new FileOutputStream( destFile );
byte[] buffer = new byte[400];
int length = 0;
while( (length = is.read(buffer)) 0 ) {
os.write(buffer,0,length); }
is.close(); os.close();
return SUCCESS;}
================= 中文问题=================
不过我全部用UTF-8并未遇到中文问题
struts2-core包struts-default.xml
文档评论(0)