点击图片上传文件

一、选择文件

1、隐藏input(大部分手机浏览器,微信中都不可用)

通过js触发选择文件。js获取选择的文件并上传

实现:

<html>
<head>
<title>上传</title>
</head>
<body>
<img src="xxxxxxx" id="image" onclick="select()" name="image" />
<input id="file" style="display:none" onchange="submit()" type="file" accept="image/*" />
<script>
    function select(){
        var ie=navigator.appName=="Microsoft Internet Explorer" ? true : false; 
        if(ie){ 
        document.getElementById("file").click(); 
        }else{
        var a=document.createEvent("MouseEvents");
        a.initEvent("click", true, true);  
        document.getElementById("file").dispatchEvent(a); 
        } 
     }
     function submit(){
        //文件上传
     }
</script>
</body>
</html>

2、微信中上传文件(仅微信中可用)

1)判断是否在微信中

Navigator 对象包含有关浏览器的信息。

appCodeName 返回浏览器的代码名
appName 返回浏览器的名称
appVersion 返回浏览器的平台和版本信息
cookieEnabled 返回指明浏览器中是否启用 cookie 的布尔值
platform 返回运行浏览器的操作系统平台
userAgent 返回由客户机发送服务器的user-agent 头部的值

这里通过返回的user-agent头部判断是否在微信中

function is_weixin() {
            var ua = navigator.userAgent.toLowerCase();
            if (ua.match(/MicroMessenger/i) == "micromessenger") {
                return true;
            } else {
                return false;
            }
        }

2)微信jssdk配置,具体请到官网查看    http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E6.AD.A5.E9.AA.A4.E4.B8.89.EF.BC.9A.E9.80.9A.E8.BF.87config.E6.8E.A5.E5.8F.A3.E6.B3.A8.E5.85.A5.E6.9D.83.E9.99.90.E9.AA.8C.E8.AF.81.E9.85.8D.E7.BD.AE

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: ‘‘, // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: ‘‘, // 必填,生成签名的随机串
    signature: ‘‘,// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});

3)页面引用js并且配置好jssdk以后,选择方法中加入判断,如果在微信中

function select(){
             if (is_weixin()) {
                wx.chooseImage({
                    count: 1, // 默认9
                    sizeType: [‘original‘, ‘compressed‘], // 可以指定是原图还是压缩图,默认二者都有
                    sourceType: [‘album‘, ‘camera‘], // 可以指定来源是相册还是相机,默认二者都有
                    success: function (res) {
                        var localIds = res.localIds.toString(); // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
                        wx.uploadImage({
                            localId: localIds, // 需要上传的图片的本地ID,由chooseImage接口获得
                            isShowProgressTips: 1, // 默认为1,显示进度提示
                            success: function (res) {
                                var serverId = res.serverId.toString(); // 返回图片的服务器端ID
                                downloadimage(serverId);//下载图片并保存到服务器中
                            },
                            fail: function (msg) {
                                alert(msg.errMsg);
                            }
                        });
                    }
                });
            }
        }

3、将input设置为透明(未全测,uc,chrome,火狐,safari,360,微信都可用)

在大部分浏览器下,为了数据安全,隐藏的input:file不能使用“click” 事件,只有当鼠标真正单击在上传控件的按钮上浏览到的文件才可以上传,所以要设置input:file的透明度达到隐藏的效果。

实现:

首先将图片和input file放至同一div下

设置input file的样式,其中top、left和height要尽可能的覆盖改图片,确保用户点击图片任一区域都可实现上传文件。

假设该图片为高60px宽60px

<html>
<head>
<title>上传</title>
</head>
<body>
<img src="xxxxxxx" id="image" onclick="select()" name="image" />
<input id="file" style="display: block;position: absolute;z-index: 999;top: 8;left: 8;height: 60px;width: 60px;opacity: 0;" onchange="submit()" type="file" />
<script>
     function submit(){
//文件上传
     }
</script>
</body>
</html>

二、上传图片

 1、采用Form表单提交,这里就不再赘述

    2、异步提交文件

1)ajaxfileupload介绍

语法:$.ajaxFileUpload([options])

  options参数说明:

1、url            上传处理程序地址。  
2,fileElementId       需要上传的文件域的ID,即<input type="file">的ID。
3,secureuri        是否启用安全提交,默认为false。 
4,dataType        服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5,success        提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6,error          提交失败自动执行的处理函数。
7,data           自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8, type            当要提交自定义参数时,这个参数要设置成post

2)实现异步上传

<html>
<head>
<title>上传</title>
</head>
<body>
<img src="xxxxxxx" id="image" onclick="select()" name="image" />
<input id="file" style="display: block;position: absolute;z-index: 999;top: 8;left: 8;height: 60px;width: 60px;opacity: 0;" onchange="submit()" type="file" />
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/ajaxfileupload.js"></script>
<script>
    function Upload() {
      var file = $("#image").val();
      if (file == "") {
          alert("请选择一个文件,再点击上传。");
          return;
      }
      $.ajaxFileUpload
       ({
            url: ‘xxxxx‘, //用于文件上传的服务器端请求地址
            secureuri: false, //是否需要安全协议,一般设置为false
            fileElementId: ‘file‘, //文件上传input的ID
            dataType: ‘json‘, //返回值类型 一般设置为json
            success: function (data, status)  //服务器成功响应处理函数
            {},
            error: function (data, status, e)//服务器响应失败处理函数
            {
                alert(e);
            }
	  })
        }
     function submit(){
        //文件上传
        Upload();
     }
</script>
</body>
</html>
时间: 2024-08-29 03:33:30

点击图片上传文件的相关文章

springBoot 连接打包成jar包运行时,获取图片上传文件、前端调用图片显示

配置文件在application.properties中进行配置 web.upload-path=d:/myfile/uploadweb.front-path=d:/myfile/frontspring.resources.static-locations=file:${web.upload-path},file:${web.front-path} application.yml配置方式 web:  upload-path: d:/myfile/upload  front-path: d:/my

解决emblog在升级kindeditor编辑器时,遇到点击图片上传的空白的bug

最近在做自己博客时候,忽然发现点击图片有时会空白,主要报editorMap  is not defint;发现没有定义这个,原来是admin/views/js/common.js两个位置有误,稍微调整一下即可. MIn晓天个人博客原创,如需转载请注明出处www.minxtblog.com

CSS:点击图片区域上传文件

前端菜鸟,本人目前只能看懂和抄代码.因为参与一个项目需要用到这块样式,于是在网上找到的例子.于是记下来,同时也是方便自己查阅. /*定义图像以及大小*/ .imageFileInput{ width: 200px; height: 200px; position: absolute; background-color: red; /*这里可以换成图片路径(background-image:../img/....)注意图片路径*/ } /*定义上传*/ .fileInput{ height: 10

UEditor之实现配置简单的图片上传示例

开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过几次眼神交流,但从没说过话,"买毛巾啊",看着阿华手里的毛巾,阿菲先开口了. 阿华回到:"是啊,这里的老板眼神太好了,我不敢偷,就只有买了." 阿菲一下就哈哈笑了,配合到:"哇,原来你是小偷." 阿华:"嘘,小声点,其实主要原因是--"阿华指着自己的脑袋接着说到:"你看,我是个有头有脸的人,所以还是要用用毛巾的

UEditor之实现配置简单的图片上传示例 (转)

http://blog.csdn.net/huangwenyi1010/article/details/51637427#comments 1.首先你可以到官网Ueditor,查看很详细的文档,包括如何安装到Eclipse,相关jar包和如何使用Ueditor,本文主要介绍如何实现单图片上传和利用自己的接口: 运行tomcat上,在google浏览器运行(Test是我的项目名称): http://localhost:8081/Test/jsp/config.json 出现一串长长的json的字符

关于js异步上传文件

好久没登录博客园了,今天来一发分享. 最近项目里有个需求,上传文件(好吧,这种需求很常见,这也不是第一次遇到了).当时第一想法就是直接用form表单提交(原谅我以前就是这么干的),不过表单里不仅有文件还有别的信息需要交互,跟后端商量后决定文件单独上传,获取到服务器端返回的文件地址在和表单一起提交.这里就需要异步上传文件. 在网上扒了扒相关的内容,发现还真不少,阮一峰老师的这篇文章(文件上传的渐进式增强)就介绍的很具体,下面就谈谈自己在实战中遇到的一些问题的感受吧. 先看看效果,实现了哪些功能 (

Java往事之《百度UEditor插件配置图片上传问题》

百度UEditor插件配置图片上传问题 前言:之前第一次用到UEditor插件的时候,一脸懵逼!没错就是一脸懵逼,去UEditor插件官网下载了一个开发版的.然后对于新鲜技术好奇,本人就迫不及待的把它copy到了我的项目里,运行之后发现鼠标点到输入框里面的时候,什么鬼啊,握了棵草!上传图片的插件置灰了如下图1,一看还有一个多图片上传的插件还在,就赶紧点了一下,点开的那一瞬间我吃了一鲸,如下图2! 图1 图2 很好!下面看一下如何解决这个问题. 1.首先你可以到官网Ueditor,查看很详细的文档

图片上传组件开发

我就要自行车 - 需求整理 放眼WWW,一般的图片上传模块,主要就是实现了三个功能,图片的预览,图片的剪裁及预览,图片的上传,那我也就整这么一个吧,再细化一下需求. 图片的预览 用户使用:用户点击“选择图片”,弹出文件浏览器,可以选择本地的图片,点击确认后,所选图片会按照原始比例出现在页面的浏览区域中. 组件调用:开发者可以自己定义图片预览区域的大小,并限定所传图片的文件大小和尺寸大小. 图片的剪裁 用户使用:用户根据提示,在预览区域的图片上拖动鼠标框出想要上传的图片区域,并且能在结果预览区域看

ajax提交formData iframe springmvc 上传文件 页面是通过iframe嵌入的html

1.引入讲个jar包 springmvc设置 commons-fileupload-1.3.3.jar commons-io-2.5.jar <!-- 定义文件解释器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置默认编码 --> <prop