美文网首页
jQuery+ajax实现简单的上传图片功能

jQuery+ajax实现简单的上传图片功能

作者: 祈澈菇凉 | 来源:发表于2020-10-26 15:13 被阅读0次

    在前面的文章里面有写到,用vue上传图片的功能,vue-element-admin上传图片的功能:https://www.jianshu.com/p/383e1f2f4276,那如果是在jQuery里面,图片上传要怎么写?今天记录一个jQuery+ajax实现简单的上传图片功能。

    思路很简单,和上面的差不多,前端以post的形式传递二进制图片文件给到后端,后端接收成功之后,同样返回一个字符串类型的url图片路径。

    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
        <head>
            <title>jQuery+ajax实现简单的上传图片功能</title>
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <link rel="stylesheet" href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
            <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
            <script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
        </head>
        <body>
            <div class="form-group">
                <label>图片</label>
                <img src="" alt="" id="img" />
                <input type="file" name="file" id="uploadImage" onchange="postData()">
            </div>
        </body>
        <script type="text/javascript">
            function postData() {
                var formData = new FormData();
                formData.append("file", $("#uploadImage")[0].files[0]);
                $.ajax({
                    url: basePath + "/upload.action",
                    type: "post",
                    data: formData,
                    processData: false, // 告诉jQuery不要去处理发送的数据
                    contentType: false, // 告诉jQuery不要去设置Content-Type请求头
                    dataType: 'text',
                    success: function(data) {
                        var params = JSON.parse(data)
                        $("#img").attr("src", params);
                    },
                    error: function(data) {
                        
                    }
                });
            }
            //赋值变量
            var basePath = getContextPath();
            // 获取项目路径
            function getContextPath() {
                var pathName = window.document.location.pathname;
                var projectName = pathName.substring(0, pathName.substr(1).indexOf(
                    '/') + 1);
                return projectName;
            }
        </script>
    </html>
    

    发送请求之后,可以在network里面看到具体的请求以及参数。
    这里了可以看到Form data的文件格式,二进制binary文件


    在看一眼返回值:
    额,这里我们的后端比较省事,简单粗暴的,直接的,赤裸裸的给了个字符串,嗯,,也行吧。

    效果是这个样子的(我这里没有给默认的图片,可以添加一下默认的图片~)
    在点击选择文件按钮的时候,会打开本地的文件夹选择一张图片,点击打开的时候,会触发onchange绑定的函数,发起请求。接收到返回值之后,再讲返回值渲染到页面上。


    注意:

    如果接口存在问题的话,要用postman测试一下
    postman测试上传图片接口步骤如下:

    1:新建一个窗口
    将接口地址和请求方式填写一下


    2:选择Body,选择form-data,选择File


    3:在KEY里面填写一下,file,不填写会出错,然后VALUE会出现选择本地图片的选项。


    4:选择完本地图片之后,点击send发送
    一般到这步就能看到返回值了


    相关文章

      网友评论

          本文标题:jQuery+ajax实现简单的上传图片功能

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