JQuery | 如何上傳文件?(單文件上傳)

coding

文件上傳對于web開發(fā)來說是一個(gè)十分常見的問題,今天就來分享下 上傳文件 的問題。本文技術(shù)棧為:
前端:HTML / Jquery
后端:Java / SpringMVC / Spring boot
由于本人為后端程序員,前端樣式就忽略了,重點(diǎn)在使用js和后臺(tái)交互,以及后端如何拿到文件數(shù)據(jù)。

文件上傳可以通過form表單方式提交到后臺(tái),也可以Ajax模擬表單方式提交到后臺(tái),下邊分別演示。

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 將文件保存到服務(wù)器
        return "another-page";
    }
}

Ajax方式上傳

Ajax方式上傳本質(zhì)上還是模擬表單數(shù)據(jù)進(jìn)行提交,這種方式常用在表單中需要上傳文件,可以先用Ajax方式上傳到服務(wù)器,同時(shí)從后臺(tái)返回保存的路徑,前臺(tái)記錄此路徑,待提交整個(gè)表單數(shù)據(jù)時(shí)攜帶文件路徑一起提交到后臺(tái)保存入庫。

前端代碼:

<!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 將文件保存到服務(wù)器
        return "success";
    }
}

總結(jié)

本文演示了web開發(fā)中上傳文件的基本操作,后面將再寫一篇文章來演示如何進(jìn)行 多文件上傳,以及文件上傳中需要注意的地方。

圖片源自網(wǎng)絡(luò),侵權(quán)必刪!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容