前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jQuery+ajax实现简单的上传图片功能

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

原创
作者头像
王小婷
修改2020-10-28 18:01:10
1.1K0
修改2020-10-28 18:01:10
举报
文章被收录于专栏:编程微刊

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

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

代码语言:javascript
复制
<!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发送 一般到这步就能看到返回值了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档