strut2 文件上传

原理:将一个文件复制到另一文件中。

这里给出action的代码,其它页面省略:

package cn.itcast.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{

    //文件拷贝函数
    //src表示源文件,dst表示目标文件
    public void copy(File src,File dst) throws Exception{
        //定义一个输入流对象,使用缓冲类需要提供一个输入流对象
        InputStream in  = new BufferedInputStream(new FileInputStream(src));
        OutputStream out = new BufferedOutputStream(new FileOutputStream(dst));
        //声明一个字节数组,用来存储读入的数据
        byte[] b = new byte[1024];
        int length=0;
        //循环读取输入流对象,把输入流读到字节数组中,返回读取的字节数长度,如果读到末尾则返回-1
        while(-1!=(length=in.read(b))){
            out.write(b);//讲字节数组的数据写到输出流文件中.
        }
    }//方法二:    public void copy2(File src,File dst) throws Exception{        InputStream in = new FileInputStream(src);        OutputStream out = new FileOutputStream(dst);        byte[] b = new byte[1024];        int len = 0;        while((len=in.read(b))!=-1){            out.write(b);        }    }

    public static void main(String args[]){
        File image = new File("C:\\bb.jpg"); //假设这个是要上传的文件
        File image2 = new File("C:\\bb2.jpg");//这个表示上传到服务端的文件

        FileUploadAction fileUploadAction = new FileUploadAction();
        try {
            fileUploadAction.copy(image, image2);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

文件上传的方式有很多,原理就是文件的复制。从输入流中复制到输出流中。

时间: 2024-08-05 16:26:54

strut2 文件上传的相关文章

strut2 文件上传完整案例

之前写的文章都是关键的代码,今天整理好一个完整案例,粘贴可运行. 上传界面:upload.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+r

strut2 自己定义文件上传错误信息

在文件上传过程中我们能够指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> <param name="maximumSize">500000</param> <param name="allowedTypes">application/vnd.ms-excel</param> <param na

strut2 多个文件上传

在单个文件上传的基础上,修改action中的属性类型,多个文件上传其实就是通过数组或者list来接收文件.客户端上传表单代码如下所示: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> &l

strut2 单个文件上传

第一步:在WEB-INF/lib下加载commons-fileupload-1.2.1.jar.commons-1.3.2.jar.这两个文件可从http://commons.apache.org/下载. 第二步:把from 表的enctype设置为:"multipart/form-data",如下: <from enctype="multipart/form-data" action="${pageContext.request.contextPa

Strut2 和Spring MVC 文件上传对比

在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commons-fileupload/),另一个是Oreilly组织的COS框架的 (http://www.servlets.com/cos). 1.Struts2的文件上传 Struts2本身并没提供上传的组件,我们可以通过调用上传框架来实现文件的上传,struts2默认是jakarta作为其文件上传的解析

Struts2单文件上传原理及示例

一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式. 2.multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里. 3.text/plain:这种方式主要适用于直接通过表单发送邮件的

struts文件上传和下载

文件上传 jsp中 <a href="/file/new.action">文件上传案例</a> fileaction中 @Override public String execute() throws Exception { return SUCCESS; } 配置xml,记得在struts.xml中导入这个xml, <constant name="struts.multipart.maxSize" value="104857

java中远程http文件上传及file2multipartfile

工作中有时会遇到各种需求,你得变着法儿去解决,当然重要的是在什么场景中去完成. 比如Strut2中file类型如何转换成multipartfile类型,找了几天,发现一个变通的方法记录如下(虽然最后没有用上..): 1 private static MultipartFile getMulFileByPath(String picPath) { 2 3 FileItem fileItem = createFileItem(picPath); 4 5 MultipartFile mfile = n

简单利用filetype进行文件上传

对于文件上传大家都很熟悉了,毕竟文件上传是获取webshell的一个重要方式之一,理论性的东西参考我的另一篇汇总文章<浅谈文件解析及上传漏洞>,这里主要是实战补充一下理论内容--filetype漏洞! filetype漏洞主要是针对content-type字段,主要有两种利用方式:    1.先上传一个图片,然后将content-type:image/jpeg改为content-type:text/asp,然后对filename进行00截断,将图片内容替换为一句话木马. 2.直接使用burp抓