jsp页面,带参数上传图片
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts 2 File Upload</title>
</head>
<body topmargin="2">
<FORM action="/brand/test" method="post"
ENCTYPE="multipart/form-data">
<input type="hidden" name="username" value="username_value"/>
<input type="hidden" name="password" value="password_value"/>
<s:file name ="myFile" />
<INPUT type="submit" value="上传">
</FORM>
<s:fielderror/>
</body>
</html>
struts.xml
<action name="test" class="brandAction" method="test">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/pjpeg,application/msword,application/vnd.ms-excel,application/x-shockwave-flash,flv-application/octet-stream,video/x-flv
</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="img">/products.jsp</result>
<result name="input">/products.jsp</result>
<result name="success">/products.jsp</result>
<result name="error">/fileupload.jsp</result>
</action>
action
private static final long serialVersionUID = 0x85369b8626L;
private static final int BUFFER_SIZE = 16384;
private File myFile;
private String fileName;
public void setMyFileFileName(String fileName)
{
this.fileName = fileName;
}
public void setMyFile(File myFile)
{
this.myFile = myFile;
}
public String test() throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username="+username);
System.out.println("password="+password);
System.out.println("default-set-file"+myFile);
String root = request.getRealPath("/");
System.out.println("file-"+Upload.toFile(myFile,fileName,root,"/test/"));
return SUCCESS;
}
upload.java
package tools;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
public class Upload {
// 上传
private static final long serialVersionUID = 0x85369b8626L;
private static final int BUFFER_SIZE = 16384;
public synchronized static String toFile(File path,String fileName,String root,String fileType) {
String imageFileName="";
String random = String.valueOf(Math.random()).substring(2);
try {
Help.createDir(root+fileType);
imageFileName = (new StringBuilder(String.valueOf(fileType
+ random))).append(getExtention(fileName))
.toString();
File imageFile = new File((new StringBuilder(String
.valueOf(root))).append(imageFileName)
.toString());
// 判断后缀类型
int position1 = imageFileName.lastIndexOf('.');
String fileName1 = codeToString(imageFileName
.substring(position1 + 1));
if (fileName1.trim().equals("jpg")
|| fileName1.trim().equals("gif")
|| fileName1.trim().equals("bmp")
|| fileName1.trim().equals("swf")
|| fileName1.trim().equals("jpeg")
|| fileName1.trim().equals("pjpeg")
|| fileName1.trim().equals("word")
|| fileName1.trim().equals("excel")
|| fileName1.trim().equals("flv")) {
InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(path), BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(imageFile),
BUFFER_SIZE);
byte buffer[] = new byte[BUFFER_SIZE];
while (in.read(buffer) > 0) {
out.write(buffer);
}
} finally {
if (in != null)
in.close();
if (out != null)
out.close();
}
}
} catch (Exception exception) {
System.err.println(exception);
}
return imageFileName;
}
public static String getExtention(String fileName) {
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
public static String codeToString(String str) {// 处理中文字符串的函数
String s = str;
try {
byte tempB[] = s.getBytes("iso8859-1");
s = new String(tempB);
return s;
} catch (Exception e) {
return s;
}
}
}
如要实现多图片上传,只要改两地方就行了。
1.jsp页面
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts 2 File Upload</title>
</head>
<body topmargin="2">
<FORM action="/brand/test" method="post"
ENCTYPE="multipart/form-data">
<input type="hidden" name="username" value="username_value"/>
<input type="hidden" name="password" value="password_value"/>
<s:file name ="myFile" />
<s:file name ="myFile1" />
<INPUT type="submit" value="上传">
</FORM>
<s:fielderror/>
</body>
</html>
2.action
private static final long serialVersionUID = 0x85369b8626L;
private static final int BUFFER_SIZE = 16384;
private File myFile;
private File myFile1;
private String fileName;
private String fileName1;
public void setMyFileFileName(String fileName)
{
this.fileName = fileName;
}
public void setMyFile(File myFile)
{
this.myFile = myFile;
}
public void setMyFile1FileName(String fileName)
{
this.fileName1 = fileName;
}
public void setMyFile1(File myFile1)
{
this.myFile1 = myFile1;
}
这样就可以获取到值了!
分享到:
相关推荐
在Struts2中处理文件上传功能时,通常需要依赖两个关键的第三方库:`commons-fileupload`和`commons-io`。这两个jar包在Java文件上传处理中扮演着至关重要的角色。 `commons-fileupload-1.2.1.jar`是Apache Commons...
Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...
Apache Struts2 Commons FileUpload反序列化远程代码执行漏洞安全公告 安全公告编号:CNTA-2018-0029 2018年11月7日,国家信息安全漏洞共享平台(CNVD)收录了Apache Struts2 Commons FileUpload反序列化远程代码...
以上就是关于Struts2中利用Apache Commons FileUpload和Apache Commons IO进行文件上传和下载的基本原理和实现流程。这两个库大大简化了处理文件操作的复杂性,提高了代码的可读性和可维护性。在实际开发中,应根据...
7. **与其他库的集成**:Apache Commons FileUpload可与Servlet API、Spring MVC、Struts等Web框架无缝集成,简化了在这些框架中实现文件上传的复杂性。 源码分析对于理解其内部工作原理非常有帮助。`commons-...
- Struts 2: 对于基于Struts 2的应用,可以通过配置`struts.multipart.parser`属性为`jakarta`来启用Apache Commons FileUpload。 总之,Apache Commons FileUpload是Java Web开发中处理文件上传不可或缺的工具,...
7. **与Struts、Spring等框架的整合**:Commons FileUpload库可以轻松与主流的Java Web框架集成,如Struts、Spring MVC等,使得文件上传功能的实现更加便捷。 总的来说,Apache Commons FileUpload库是Java开发人员...
通过这种方式,Struts2的拦截器和Common-FileUpload相结合,可以构建出强大且灵活的文件上传功能,同时保持代码的整洁和模块化。这不仅可以提高代码的可维护性,还能有效地避免常见的文件上传安全问题。对于Web...
2. 带进度条的文件上传:在传统的文件上传过程中,用户通常无法得知文件上传的具体进度,只能等待上传完成。而带进度条的文件上传则解决了这个问题,它通常基于HTML5的File API,可以实时更新文件上传进度。例如,`...
通过合理配置,开发者可以利用Struts2实现灵活的控制器层,将业务逻辑与表现层分离,提高代码的可维护性和可扩展性。同时,Struts2还提供了丰富的插件系统,可以轻松集成其他技术和库,如Spring、Hibernate等,...
在Java Web开发中,文件上传和下载是常见的功能需求,Apache Commons FileUpload库提供了一种高效、方便的方式来处理这些...在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。
此外,`Common-fileupload`与Servlet API紧密集成,使得它易于与其他Java Web框架如Spring、Struts等结合使用。 为了实现文件上传,你需要创建一个Servlet或者控制器,配置MultipartConfigElement以指定临时文件...
2. **内存与磁盘管理**:FileUpload库考虑到了文件大小和服务器内存限制。对于小文件,它会存储在内存中;对于大文件,可以配置将其写入临时文件系统,以防止消耗过多内存。 3. **上传进度监听**:开发者可以注册...
- `commons-fileupload`: 处理HTTP文件上传的库,Struts2使用它来支持用户上传文件。 - `commons-lang3`: Apache Commons提供的Java实用工具类库,增强Java的基本功能。 - `javassist`: 动态代码生成库,Struts2...
FileUpload库可以很好地与Spring MVC、Struts等其他框架集成,简化文件上传的处理逻辑。 9. **版本更新** “commons-fileupload-1.3.1”是FileUpload的一个稳定版本,相比早期版本,它可能包含了性能优化、新特性...
6. **与其他框架的集成**:Apache Commons FileUpload可方便地与Struts、Spring MVC等Web框架结合,提供优雅的文件上传解决方案。 总之,Apache Commons FileUpload 1.2.1是一个强大的文件上传组件,它简化了在Java...
描述中提到的同样为"commons-fileupload.jar",暗示我们将讨论的是一个关于文件上传处理的Java组件。这个库可以解析HTTP请求,将文件内容分离并存储为临时文件或者内存对象,以便后续的业务逻辑进行处理。 标签中的...
总结来说,这个教程深入讲解了如何在WebWork 2.2.7环境中使用Apache Commons FileUpload来实现文件上传功能,包括配置、源代码实例以及异常处理。通过遵循这些步骤,开发者可以构建健壮的文件上传功能,同时处理大...
标题中的"commons-fileupload-1.2.1-bin"和"commons-io-1.4-bin.zip"分别指的是Apache Commons FileUpload 1.2.1版本和Apache Commons IO 1.4版本的二进制包。这两个组件在Java开发中扮演着重要的角色,尤其在处理...