java传统上传文件、spring mvc上传文件、spring mvc跨服务器上传文件

1.maven引入jar包

<dependencies>
        <!-- spring mvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- jackson:json序列化和反序列化 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
        <!-- 上传文件 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <!--  跨服务器上传文件 -->
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
            <version>1.19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
            <version>1.19</version>
        </dependency>
    </dependencies>

 

2.spring mvc配置文件:

 

3.前端代码:

 

4.spring mvc后端代码:

package lingbug.controller;

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.lang.reflect.Field;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("/testFileupload")
public class TestFileuploadController {
    @RequestMapping("/fileuploadNormal")
    public String testFileuploadNormal(HttpServletRequest request) throws Exception {
        System.out.println("传统上传文件方式执行了...");

        //文件夹路径
        String folderPath = request.getSession().getServletContext().getRealPath("/normalUpload/");
        File folder = new File(folderPath);
        //如果文件夹不存在,创建
        if (!folder.exists()) {
            folder.mkdirs();
        }

        //初始化请求解析器
        DiskFileItemFactory diskFactory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(diskFactory);

        //解析请求
        List<FileItem> fileList = upload.parseRequest(request);
        //循环
        for (FileItem item : fileList) {
            //判断是否是默认表单元素
            if (item.isFormField()) {

            } else {
                //文件名称
                String fileName = item.getName();

                //随机数,防止文件覆盖
                String uuid = UUID.randomUUID().toString().replace("-", "");
                String newFileName = uuid + "_" + fileName;

                //保存文件
                File file = new File(folderPath, newFileName);
                item.write(file);

                //删除临时文件
                item.delete();
            }
        }

        return "success";
    }

    @RequestMapping("/testFileuploadSpringMvc")
    public String testFileuploadSpringMvc(HttpServletRequest request, MultipartFile uploader) throws Exception {
        //uploader必须与前端页面的name一致
        System.out.println("使用spring mvc上传文件执行了...");

        //文件夹路径
        String folderPath = request.getSession().getServletContext().getRealPath("/normalUpload/");
        File folder = new File(folderPath);
        //如果文件夹不存在,创建
        if (!folder.exists()) {
            folder.mkdirs();
        }

        //文件名称
        String fileName = uploader.getOriginalFilename();

        //随机数,防止文件覆盖
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String newFileName = uuid + "_" + fileName;

        //保存文件
        File file = new File(folderPath, newFileName);
        uploader.transferTo(file);

        return "success";
    }

    @RequestMapping("/testFileuploadSpringMvcCrossServer")
    public String testFileuploadSpringMvcCrossServer(MultipartFile uploader) throws Exception {
        //uploader必须与前端页面的name一致
        System.out.println("使用spring mvc跨服务器上传文件执行了...");

        //假设要上传到另外一台服务器的uploadFiles文件夹下
        String folderPath = "http://localhost:9090/uploadFiles/";

        //文件名称
        String fileName = uploader.getOriginalFilename();

        //随机数,防止文件覆盖
        String uuid = UUID.randomUUID().toString().replace("-", "");
        String newFileName = uuid + "_" + fileName;

        //文件路径
        String filePath = folderPath + newFileName;

        //开始跨服务器操作
        //1.初始化客户端,和文件服务器通信
        Client client = Client.create();
        //实例化请求资源,将文件路径传递过去
        WebResource webResource = client.resource(filePath);
        //将文件放在服务器刚请求的路径:注意,放的是字节,所以要uploader.getBytes()
        webResource.put(uploader.getBytes());

        return "success";
    }
}

 

如果提示class not found,记得将需要的相应jar包放在tomcat的lib文件夹下,一般是common-io和commons-fileupload

 

Ending~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值