struts2图片上传显示图片
A. struts2文件上传中,如何限制上传的文件类型
只需要在struts配置文件中配置就OK了
案例如下:
<package name="upload" extends="struts-default" namespace="/upload">
<!-- 配置 -->
<action name="upload" class="www.ijava.com.UploadAction" >
<param name="savePath">e:/images/</param>
<!--往fileuploadInterceptor 注入 -->
<interceptor-ref name="defaultStack">
<!-- 改变当前文件运行上传的类型 -->
<param name="fileUpload.allowedTypes">image/jpeg,image/jpg</param>
<!-- 允许的文件后缀 -->
<param name="fileUpload.allowedExtensions">jpg,jpeg,gif</param>
</interceptor-ref>
<result>/index.jsp</result>
</action>
B. struts2上传图片到linux服务器,成功上传文件,无法返回路径,报错: net::ERR_CONTENT_LENGTH_MISMATCH
因为windows和linux系统的文件路径分割符是不一样的。一个是“/”一个是“\”,所以换了环境当热会错。java中有一个方法叫做File.separator可以得到是运行环境下的分隔符,你需要在代码中做出修改。将文件路径拆开后然后使用 File.separator拼接。
C. SSH2框架图片上传到数据库并显示在JSP页面
//传统的struts2上传是很简单的。
//页面form提交到action:
//这里使用集合,页面提交过来的n个inputname=“file”的文件将会被装进去,如果只上传一
//个文件可以直接声明成:privateFilefile、StringfileFileName、StringfileContentType
privateList<File>file;
privateList<String>fileFileName;
privateList<String>fileContentType;
publicList<File>getFile(){
returnfile;
}
publicvoidsetFile(List<File>file){
this.file=file;
}
publicList<String>getFileFileName(){
returnfileFileName;
}
publicvoidsetFileFileName(List<String>fileFileName){
this.fileFileName=fileFileName;
}
publicList<String>getFileContentType(){
returnfileContentType;
}
publicvoidsetFileContentType(List<String>fileContentType){
this.fileContentType=fileContentType;
}
publicStringexecute()throwsException{
List<String>s=newArrayList<String>();
for(inti=0;i<file.size();i++){
InputStreamis=newFileInputStream(file.get(i));
//在webroot先建立个upload文件夹,也可以用代码创建,这里为了简便,就直接使用了
Stringroot=ServletActionContext.getRequest().getRealPath("/upload");
FiledistFile=newFile(root,this.getFileFileName().get(i));
OutputStreamos=newFileOutputStream(distFile);
byte[]buffer=newbyte[400];
intlength=0;
while((length=is.read(buffer))>0){
os.write(buffer,0,length);
}
is.close();
os.close();
//数据库存放以下路径,当需要在页面显示,直接提取出来用IMG标签装载即可
StringnewFilePath=root+"/"+distFile.getFileName();
}
returnSUCCESS;
}
//的代码不需要很复杂,简单的执行数据库插入就好。