开发者学堂课程【Java Web开发系列课程 - Struts2框架入门:单文件上传】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/537/detail/7319
单文件上传
Intercept 本来是拦截器,在这里做文件上传功能,需要 httpservletrequest 来获取,判断一下是不是媒体提交。
if(LOG, isDebugEnabled ()){
ActionProxy proxy= invocation ,getProxy(); LOG. debug( getTexthessage (”struts, messages. bypass. request", new Object[]{proxy. Ge
}
这是打印信息
contenttype 是获取文件类型
filename 是获取文件的名字
通过输的名字加上 contenttype,还有 filename 这个会用到,value 就是表达域的名称,下一个是 getfiles 进去看的话,主要看获取文件的状态。
acceptedFiles . add(files[index]);
这个判断它为空
acceptedContentTypes . add( contentType [index]);
这个是获取文件类型
acceptedFileNames . add(fileName[index]);
这个是获取文件名称
}
文件上传的代码:
private List(FileItem) parseRequest ( HttpServletRequest sequest, String savebri) throw.
DiskFileItemFactory fac=" createDiskFileItemFactory (saveDir);
ServletFileUp {oad upload=new ServletFileUpload (fac);
upload. setSizeMax (maxSize);
return upload, parseRequest ( createRequestContext ( servletRequest ));
}
和之前的是一模一样的,直接用就可以了
<form action=”upload.action”method=”post”encype></form>
文件:
<input type="file"name="file"/>
<input type="submit"value="上传"/>
</form>
File 的名称和上传的域的名称相同,有一个 filefilename 是文件名,filecontenttype是文件类型
//文件名
private String fileFileName ;
//文件的类型
private String fileContentType ;
//上传
public String upload() throws FileNotFoundException {
HttpServletRequest request= ServletActionContext . getRequest ();
String path=request. getRealPath ("/upload");
InputStream is=new FileInputStream (file);
OutputStream os=new File (path, fileFileName );
}
不需要单独引用拦截器,首先再桌面新建一个文件,点击提交之后,出现临时目录,
但是临时目录可以配置,就配置到C盘,设置临时目录就额可以从大的里面去找,或者直接删掉错误的,结果显示报错,因为这个最大默认值是2097152,要想要再大的就得去设置,就必须引用拦截器,单独引用不好跑,原码里有参数,但是这些参数都可以设置,设置好之后,它默认是2兆,我们设置10兆,直接去计算一下,2*1024,20971520就是20兆了,之前的文件是9兆,提交之后还是错的,还有一个配值。
设置上传文件的最大大小必须大于等于 maximumsize,提交后就可以了。