通过二维码上传手机文件到服务器

Hello,大家好。这是我的第一篇博客,给大家分享下手机扫码上传图片到服务器实现手机pc同步.

1、自动生成二维码--> 可以去二维码生成工具网站获取api也可以直接用这个:http://qr.topscan.com/api.php?text= ?

注意:问号代表二维码访问的路径如果后面跟www.baidu.com就会跳转百度

2、这里写了个h5页面用于手机扫一扫上传文件跳转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>load_photo</title>

    <link rel="stylesheet" href="${basePath}/resources/css/lyj/load_photo/load_photo.css">
</head>
<body>
    <div class="phone_container">
        <div class="photo_content">
            <div class="header">
                BIP产品文件上传模块
            </div>
            <div class="business_name">
                业务名称:测试业务
            </div>
            <div class="material_name">
                材料名称:身份证
            </div>
            <img src=""  class="showImg" width="90%">
            <div class="low_bottom">
                 <div class="bottom">
                   <p>选择</p>
                   <p>文件</p>
                 </div>
                 <div class="bottom_sure">
                     <p>确认</p>
                     <p>上传</p>
                 </div>
            </div>
            <div class="load_btn">
                <form  enctype="multipart/form-data">
                    <input type="file" class=‘inp_btn‘accept="image/png,image/jpeg,image/jpg">
                    <input type="button" value="提交" class="btn_empty">
                </form>
              </div>
        </div>
    </div>
</body>
<script src="${basePath}/resources/js/plugins/jquery/jquery.js"></script>
<script type=‘text/javascript‘>
//type 的值为1:选择文件,2选择文件&确认上传
$(document).ready(function(){

        $(‘.bottom_sure‘).css(‘display‘,‘none‘);
        $(‘.btn_empty‘).css(‘display‘,‘none‘);

   $(‘.inp_btn‘).change(function(){
      $(‘.bottom_sure‘).css(‘display‘,‘inline-block‘);
      $(‘.btn_empty‘).css(‘display‘,‘inline-block‘);
       //展示图片
       file=$(‘.inp_btn‘).get(0).files[0];
       var img_photo=$(‘.showImg‘);
       var reader=new FileReader();
       if(file){
           reader.readAsDataURL(file);
           reader.onload=function(){
            $(‘.showImg‘).get(0).src=reader.result;
            localStorage.setItem(‘img_data‘,reader.result);
           }
       }else{
           console.log(‘文件为空‘)
       }
   })
$(‘.btn_empty‘).click(function(){
    if(localStorage.getItem(‘img_data‘)!==‘‘){
        console.log(localStorage.getItem("img_data"));
        //    发起ajax请求
        $.ajax({
            url:‘/phone/pic‘,
            data:{file:localStorage.getItem("img_data")},
            method:‘post‘,
            success:function(res_data){
                console.log(res_data)
            }
        })
    }
})
})
</script>
</html>

h5 效果:

3、给二维码生成唯一标识(这里通过路由跳转给当前h5页面二维码路径变量上赋值UUID->一打开页面二维码uuid刷新)

  @RequestMapping(value = "/lyjSanWang")
    public String lyjSanWang(Model model,Integer ordId,Integer compId) {
        String front = UUID.randomUUID().toString();
        String back = UUID.randomUUID().toString();
        model.addAttribute("front",front);
        model.addAttribute("back",back);
        model.addAttribute("ordId",ordId);
        model.addAttribute("compId",compId);
        return "lyj/check/check.ftl";
    }

4、二维码check.ftl页面:

<!-- 手机上传 -->
<div id="open_window">
   <div class="img-erweima">
      <div>
         <p>扫一扫上传身份证正面</p>
         <img class="erweima_face" src="http://qr.topscan.com/api.php?text=http://localhost:8087/phone/page?flag=${front}" >
                                                                                //由二维码路径可以看出,二维码跳转的就是h5页面的路由
      </div>
      <div>
         <#--flag=${back}-->
<p>扫一扫上传身份证背面</p>
         <img class="erweima_back"  src="http://qr.topscan.com/api.php?text=http://localhost:8087/phone/page?flag=${back}" >
      </div>
   </div>
   <div><button onclick="closes_window()" class="close_window">返回信息填写</button></div>
</div>

5、服务器这块

1、这个处理器用于扫二维码的展示---h5页面

@RequestMapping(value = "/phone")
@Controller
public class PhonePicController extends BaseController{
    @Autowired
PhonePicService pic;
    protected static String PHONEURL = "http://localhost:8087/flag=";
    private static final Log logger = LogFactory.getLog(PhonePicController.class);
    //展示页面
@RequestMapping(value = "/page", method = RequestMethod.GET)
    public String page(HttpServletRequest request) {
        logger.info(request.getParameter("flag"));
        return "upload/load_photo.ftl";
    }

6、最后写个处理器就可以用于接收h5页面图片了

注意:因为前台传过来的图片是base64二进制,所以我这边后台进行了处理转化了图片路径存服务器

    //手机上传图片图片
    @RequestMapping(value = "/pic", method = RequestMethod.POST)
    @ResponseBody
    public ResultInfo pic(HttpServletRequest request, String file,String flag,Integer side) {
        side=1;
        if (file == null && StringUtil.isEmptyTrim(file)) {
            logger.error("web图片单独上传异常");
        }
        System.out.println("图片----------" + file);
        //写个路径,把base64转路径
        String fileprex = "/resources/upload";
        String filename = UUID.randomUUID().toString() + ".jpg";
        String picpath = request.getSession().getServletContext().getRealPath(fileprex) + filename;
        System.out.println(picpath);
        System.out.println(flag);
        System.out.println(side);
        if (file != null) {
            Base64Utils.Base64ToImage(file, picpath);
        }
        Integer i = pic.save(fileprex + filename,flag);

        if (i < 0) {
            logger.error("失败");

        }
        return ResultInfo.success("上传图片成功",i);
    }
    //获取数据库路径,回显数据
    @RequestMapping(value = "/byurl", method = RequestMethod.POST)
    @ResponseBody
    public ResultInfo findbypic(HttpServletRequest request,String flag) {
        if (flag == null && StringUtil.isEmptyTrim(flag)) {
            logger.error("web图片单独上传异常");
        }
        System.out.println(flag);
        String url = pic.findbypic(flag);
        System.out.println(url);
         String path="http://localhost:8087";
         String data=path+url;
        return ResultInfo.success("ok",data);
    }

    //
    @RequestMapping(value = "/bycomid", method = RequestMethod.POST)
    @ResponseBody
    public ResultInfo bycomid(HttpServletRequest request,String tokenId, String file,String flag,Integer compId) {
            UserInfo userInfo;
            try {
                userInfo = getUserInfo(tokenId);
            } catch (Exception e) {
                return ResultInfo.reLogin();
            }

            if (file == null && StringUtil.isEmptyTrim(file)) {
                logger.error("web图片单独上传异常");
            }
            System.out.println("图片----------" + file);
            //写个路径,把base64转路径
            String fileprex = "/resources/upload/";
            String filename = UUID.randomUUID().toString() + ".jpg";
            String picpath = request.getSession().getServletContext().getRealPath(fileprex) + filename;
            if (file != null) {
                Base64Utils.Base64ToImage(file, picpath);
            }
            Integer i = pic.saveComid(userInfo, fileprex + filename, flag, compId);
            if (i < 0) {
                logger.error("失败");
            }
            return ResultInfo.success("ok", 200);
        }

原文地址:https://www.cnblogs.com/zrboke/p/11192458.html

时间: 2024-12-12 23:44:43

通过二维码上传手机文件到服务器的相关文章

【扫一扫二维码,传智大礼包带回家】

[扫一扫二维码,传智大礼包带回家]扫一扫下方二维码或者搜索微信公众账号cditcast就可以即时获得最新最全的传智播客成都中心教学资源,转发这条微博并@传智播客成都中心 你就有机会获得传智播客教学光盘一整套.传智特刊全年12期一整套.传智鼠标垫.传智迷T-shirt等精美礼物,活动公平公正公开.成都传智播客官网:http://cd.itcast.cn?140806ls [扫一扫二维码,传智大礼包带回家]

微信企业号上传媒体文件之服务器文件上传

微信企业号上传媒体文件之服务器文件上传 企业在使用接口时,对多媒体文件.多媒体消息的获取和调用等操作,是通过media_id来进行的. 通过接口https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件. 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源. 通常文件上传是通过html表单进行的,通过HttpURLConn

批量生成二维码打包成exe文件

需求:  根据url 和 文件名称 生成二维码   将二维码放到背景图上合成一张二维码 思路: 使用qrcode库 获取二维码 保存本地  全部完成后 与本地背景图合成   最后使用pyinstaller将python打包成exe文件 # -*- coding: utf-8 -*- import urllib; import os import time import threadpool from PIL import Image import qrcode path = os.getcwd(

手机微信内点击网页链接或识别二维码直接调用手机浏览器打开的解决方案

常使用微信分享网页链接的朋友可能都会经常碰到打开后提示 “已停止访问该网页” 的情况,遇到这种情况的时候,很多人不知道怎么办,其实做到微信内打开网页自动唤醒手机默认浏览器打开就能解决问题了.下面给大家讲解一下这个功能实现过程. 功能目的 生成微信跳转链接,实现微信内置浏览器跳转外部浏览器打开网页. 操作步骤 第一步:打开 ElephantJump 第二步:填入网页链接点击生成 第三步:复制跳转链接和二维码 第四步:分享跳转链接和二维码 实现效果 功能实现后, 苹果用户即可在微信内直接下载app也

微信内点击链接或扫描二维码直接打开手机默认浏览器打开指定网页

需求分析 将打包好的apk/ios文件部署到服务器,把下载页面的URL通过二维码编辑器或根据URL代码生成一个二维码,然后通过二维码进行微信推广已经成为很多用户惯用的方式.但微信会对含apk/ios文件的链接进行了屏蔽,所以导致微信扫码打不开下载链接.理想的状态是安卓自动下载,苹果点击左上角按钮前往Safari下载.那么究竟该如何处理才能达到理想的结果呢? 我们知道 js 可以通过 window.navigator.userAgent 来获取浏览器的相关信息,比如:Mozilla/5.0 (Wi

ubuntu使用ssh远程登录服务器及上传本地文件到服务器

1. ubuntu 远程登录   首先你的ubuntu要能够支持ssh,如果不能,自行百度! 打开终端,输入 ssh  [email protected](你的服务器的IP地址) 回车就会让你输入服务器的密码,输入密码即可登录 2.上传文件至服务器 命令 scp -r 要上传的文件 [email protected](服务器IP地址):/home/byer/ 回车输入密码即可

上传本地文件到服务器

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Aspose.Pdf;using System.IO;using System.Diagnostics; namespace Windo

网页上传excel文件到服务器,服务端用NPOI解析excel

aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyLoad.aspx.cs" Inherits="UpdateAddi_MyLoad" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org

Linux命令行上传本地文件到服务器 、 下载服务器文件到本地

sh使用命令: scp 将本地文件上传至服务器 第一个是本地文件的路径/文件名, 例如 ./index.tar.gz  . index.html . bg.png 等 第二个是要上传到的服务器的位置  例如  root@39.106.144.90:/var/www scp path/filename userName@sseverName:path 如果是要下载服务器的文件到本地 则调换两个位置就可以 scp userName@sseverName:path path/filename 如果操作