• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >jquery > jQuery+Ajax实现图片的预览和上传

jQuery+Ajax实现图片的预览和上传

作者:HYeeee 字体:[增加 减小] 来源:互联网 时间:2017-11-21

HYeeee通过本文主要向大家介绍了jquery ajax,图片上传-java等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
1、配置Spring-web.xml
 <!-- springmvc上传图片 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="maxUploadSize" value="10485760000"></property>
        <property name="maxInMemorySize" value="40960"></property>
    </bean>
2、引用jQuery的插件ajaxFileUpload.js

地址:
https://github.com/carlcarl/AjaxFileUpload
在线引用一直没有效,就直接下载放到js文件夹中。

3、jsp代码

这里是将input不显示,实现点击图片上传文件。这里需要注意的是==input一定要写name=”file”==,否则后台会一直接收不到数据。

<div >

    <label >点击图片即可修改</label><br>

    <img id="headPic" src="/market/images/image.png"  width="150px" height="150px" style="padding: 5px">
    <input id="upload" name="file" accept="image/*" type="file" style="display: none"/>

    <button id="submit_btn" type="submit">确定修改</button>
</div>
4、js代码

$(function() {
    //头像预览
    $("#headPic").click(function () {
        $("#upload").click(); //隐藏了input:file样式后,点击头像就可以本地上传
        $("#upload").on("change",function(){
            var objUrl = getObjectURL(this.files[0]) ; //获取图片的路径,该路径不是图片在本地的路径
            if (objUrl) {
                $("#headPic").attr("src", objUrl) ; //将图片路径存入src中,显示出图片
            }
        });
    });

     //图片上传
    $("#submit_btn").click(function () {

        var imgurl = document.getElementById("upload").value;

        $.ajaxFileUpload({
            url:"uploadHeadPic",
            fileElementId: "upload", //文件上传域的ID,这里是input的ID,而不是img的
            dataType: 'json', //返回值类型 一般设置为json
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            success: function (data) {
                alert(data.code+" "+ data.msg);
                if (data.code==200){

                    $("#headPic").attr("src","/market/images/image.png");
                    //将图片换成默认的+图片
                }
               =
            }

        });


    });

});

//建立一個可存取到該file的url
function getObjectURL(file) {
    var url = null ;
    if (window.createObjectURL!=undefined) { // basic
        url = window.createObjectURL(file) ;
    } else if (window.URL!=undefined) { // mozilla(firefox)
        url = window.URL.createObjectURL(file) ;
    } else if (window.webkitURL!=undefined) { // webkit or chrome
        url = window.webkitURL.createObjectURL(file) ;
    }
    return url ;
}
5、后台java代码
@RequestMapping(value = "/uploadHeadPic"
            , method = RequestMethod.POST
            , produces = "application/json; charset=utf-8")
    @ResponseBody
    public Object uploadHeadPic(@RequestParam() MultipartFile file, HttpServletRequest request) {
        //在这里面文件存储的方案一般是:收到文件→获取文件名→在本地存储目录建立防重名文件→写入文件→返回成功信息
        //如果上面的步骤中在结束前任意一步失败,那就直接失败了。
        FileOutputStream out=null;
        if (null == file || file.isEmpty()) {
            responseObj = new ResponseObj();
            responseObj.setCode(400);
            responseObj.setMsg("文件不能为空");

        }else{

            responseObj = new ResponseObj();
            responseObj.setCode(200);
            responseObj.setMsg("文件上传成功");

            //这里以用户ID作为文件夹
            int uid = (Integer) request.getSession().getAttribute("userid");
            //创建一个文件夹,网上代码很多
            String url = new FileUtil().createImageDir( String.valueOf(uid));
            try {
            //获得二进制流并输出
                byte[] f = file.getBytes();
                out = new FileOutputStream(url+file.getOriginalFilename());
                out.write(f);

            } catch (IOException e) {
                System.out.println("上传失败");
                responseObj.setCode(500);
                responseObj.setMsg("文件保存失败");
            }finally {
                // 完毕,关闭所有链接
                try {
                    out.close();
                } catch (IOException e) {
                    System.out.println("关闭流失败");
                }
            }

        }

        return new GsonUtil().CollectionToJson(responseObj);
    }
//在获得file后,打印下面信息
System.out.println(file.getContentType());
System.out.println(file.getOriginalFilename());
System.out.println(file.getName());

image/png      //input配置的 accept="image/*"
clipboard.png  //上传的图片名
file           //这个flie是input的name属性决定

现在有个问题是,在上传图片后,第二次点击上传,这时上传的图片依旧是之前的值,尝试多种清空input的file值也没有用。
以下方法都不行

var file = doucment.getElementById('file');
//1
file.value = ''; //虽然file的value不能设为有字符的值,但是可以设置为空值
//2
file.outerHTML = file.outerHTML; //重新初始化了file的html
//3
var obj = document.getElementById('fileupload') ; 
obj.select(); 
document.selection.clear(); 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • jQuery+Ajax实现图片的预览和上传

相关文章

  • 2017-08-16jQuery EasyUI API 中文文档 - DataGrid数据表格
  • 2017-08-16jquery.post用法关于type设置问题补充
  • 2017-08-16超简单的jquery的AJAX用法
  • 2017-08-16利用jQuery实现漂亮的圆形进度条倒计时插件
  • 2017-08-16移动手机APP手指滑动切换图片特效附源码下载
  • 2017-08-16jQuery中:lt选择器用法实例
  • 2017-08-16jQuery ajax 路由和过滤器使用说明
  • 2017-08-16JQuery和html+css实现带小圆点和左右按钮的轮播图实例
  • 2017-08-16基于jquery 的一个progressbar widge
  • 2017-08-16jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • jquery 清空file域示例(兼容个浏览器)
    • jQuery内存泄露解决办法
    • 如何让浏览器支持jquery ajax load 前进、后退功能
    • jQuery获取复选框被选中数量及判断选择值的方法详解
    • jQuery中的编程范式详解
    • jquery 导航条的效果(css选择器控制)
    • 基于jquery的固定表头和列头的代码
    • jquery中获取元素的几种方式小结
    • 用JQuery 实现AJAX加载XML并解析的脚本
    • jquery文字上下滚动的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有