美文网首页WEB前端程序开发日更挑战集锦让前端飞
JQuery | 如何上传文件?(单文件上传)

JQuery | 如何上传文件?(单文件上传)

作者: 峰眼看世界 | 来源:发表于2020-03-17 22:09 被阅读0次
coding

文件上传对于web开发来说是一个十分常见的问题,今天就来分享下 上传文件 的问题。本文技术栈为:
前端:HTML / Jquery
后端:Java / SpringMVC / Spring boot
由于本人为后端程序员,前端样式就忽略了,重点在使用js和后台交互,以及后端如何拿到文件数据。

文件上传可以通过form表单方式提交到后台,也可以Ajax模拟表单方式提交到后台,下边分别演示。

form表单上传

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>

<body>
    <h1>文件上传示例</h1>
    <form method="post" enctype="multipart/form-data" action="/upload-form" >
        <input id="file" type="file" name="file" accept="*">
        <input type="submit">
    </form>
</body>
</html>

后端代码:

@Controller
public class UploadController {
    @PostMapping("upload-form")
    public String upload(@RequestParam("file") MultipartFile file) {
        System.out.println(file.getOriginalFilename());
        // todo 将文件保存到服务器
        return "another-page";
    }
}

Ajax方式上传

Ajax方式上传本质上还是模拟表单数据进行提交,这种方式常用在表单中需要上传文件,可以先用Ajax方式上传到服务器,同时从后台返回保存的路径,前台记录此路径,待提交整个表单数据时携带文件路径一起提交到后台保存入库。

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>

<body>
    <h1>文件上传示例</h1>
    <div>
        <input id="file1" type="file" name="file1" accept="*">
        <input type="button" value="上传" onclick="onUpload()">
    </div>

    <script type="text/javascript" src="/static/lib/jquery/1.9.1/jquery.min.js"></script>
    <script>
        function onUpload() {
            var formData = new FormData();
            // 获取文件
            var fileData = $("#file1").prop("files")[0];
            // 把所以表单信息
            formData.append("file1", fileData);
            $.ajax({
                url: '/upload-ajax',
                type: 'POST',
                async: false,
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                success: function (data) {
                    alert(data);
                }
            });
        }
    </script>
</body>
</html>

后端代码:

@Controller
public class UploadController {
   @PostMapping("upload-ajax")
    @ResponseBody
    public String upload1(@RequestParam("file1") MultipartFile file) {
        System.out.println(file.getOriginalFilename());
        // todo 将文件保存到服务器
        return "success";
    }
}

总结

本文演示了web开发中上传文件的基本操作,后面将再写一篇文章来演示如何进行 多文件上传,以及文件上传中需要注意的地方。

图片源自网络,侵权必删!

相关文章

网友评论

    本文标题:JQuery | 如何上传文件?(单文件上传)

    本文链接:https://www.haomeiwen.com/subject/lxuxyhtx.html