上传文件保存本地

本文介绍了一个使用Java和jQuery实现的文件上传功能,包括文件的服务器端存储和客户端预览。通过MultipartFile处理文件,利用FormData进行Ajax提交,实现了上传文件的即时预览效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
    <title>文件上传</title>
    <script src="/resources/js/jquery-3.3.1.js"></script>
</head>

<body>
<%--<form action="#" enctype="multipart/form-data" method="post">--%>
<form>
    上传用户:<input type="text" name="username"><br/>
    上传文件:<input type="file" name="file" id="file"><br/>
    <img id="show-img" width="200px" height="200px"/>
    <input name="driverLicenceImg" id="img" hidden/>
    <input type="submit" id ="submit" value="提交">
</form>
<script>
    $("#file").on("change", function () {
        var fileObj = this.files[0];
        var formFile = new FormData();
        formFile.append("file", fileObj);
        var data = formFile;
        $.ajax({
            url: "/upload",
            type: "post",
            data: data,
            dataType: "json",
            processData: false,
            contentType: false,
            success: function(data) {
                $("#img").attr("value", data.url);;
                $("#show-img").attr("src", data.url);
            },
            error: function() {
            }
        });
    });
</script>
</body>
</html>

@Controller
public class UploadController {
//tomcat配置虚拟地址自行百度,so easy
    private static String VIRTUAL_PATH = "http://localhost:8080/imgs";
    private static String PHYSICAL_PATH = "e://test/imgs";
    @RequestMapping(path = "/upload", method = RequestMethod.POST)
    @ResponseBody
    public Object upload(MultipartFile file) {
//        String rootPath = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
        String rootPath = PHYSICAL_PATH;
        String datePath = getAbsolutePathDate(rootPath);
        try {
            File localFile = new File(datePath + "/" + file.getOriginalFilename());
            localFile.createNewFile();
            file.transferTo(localFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Map<String,Object> map = new HashMap<>();
        map.put("url",getAbsolutePathDate(VIRTUAL_PATH)  + "/" + file.getOriginalFilename());
        return map;
    }
    private String getAbsolutePathDate(String rootPath){
        DateFormat df = new SimpleDateFormat("yyyyMMdd");
        String ds = df.format(new Date());
        String path = rootPath+"/"+ ds;
        File folder = new File(path);
        if(!folder.exists()){
            folder.mkdirs();
        }
        return path;
    }

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值