通过API接口实现图片上传
通过API接口实现图片上传
需求
近期在接口功能实现要求,实现一个API图片上传,补充商户开户后补充图片信息,用于管理人员审核.
业务要求
- 图片有多条,法人信息,授权信息,等 有必填图片,有非必填图片,文件大小限制为2MB.
- 必填的图片未上传,则本次均不录入数据库.
- 图片要求在一次确认后,审核人员才能显示.
- 需要进行相关得记录,用于后续查看.
详细设计
为了满足以上实现,有两种实现方式
- 单个批量接口 所有的文件通过一个接口批量上传.
- 文件单条上传+确认上传.
文件大小在2MB,如果批量上传,10个文件就要20MB,耗时很长,而且会占用带宽,批量接口实现起来比较复杂,评估后,决定使用单条上传+确认上传两步的方式.
流程图
附件上传:
附件确认:
风险点和优化事项
- 重复多次上传进行限制.
- 针对重复图片,同批次进行MD5判断,如果已存在则不需要传入到内部的文件服务.
数据库表设计
MERCHANT_FILE_UPLOAD_BATCH 文件批次上传表
-- auto-generated definition
create table MERCHANT_FILE_UPLOAD_BATCH
(PKID NUMBER not nullconstraint MERCHANT_FILE_UPLOAD_BATCH_PKprimary key,OID_TRADERNO VARCHAR2(32),BATCH_ID VARCHAR2(32),BATCH_STATUS VARCHAR2(32),CREATE_TIME TIMESTAMP(6),UPDATE_TIME TIMESTAMP(6),CONFIRM_TIME TIMESTAMP(6)
)
/comment on column MERCHANT_FILE_UPLOAD_BATCH.OID_TRADERNO is '商户号'
/comment on column MERCHANT_FILE_UPLOAD_BATCH.BATCH_ID is '商户批次号'
/comment on column MERCHANT_FILE_UPLOAD_BATCH.BATCH_STATUS is '批次状态
CREATED
SUCCESS'
/comment on column MERCHANT_FILE_UPLOAD_BATCH.CONFIRM_TIME is '确认时间'
/create unique index BATCH_UNon MERCHANT_FILE_UPLOAD_BATCH (OID_TRADERNO, BATCH_ID)
/create index BATCH_CREATE_TIME_INDEXon MERCHANT_FILE_UPLOAD_BATCH (CREATE_TIME)
/
MERCHANT_FILE_UPLOAD_RECORD 文件上传记录表
-- auto-generated definition
create table MERCHANT_FILE_UPLOAD_RECORD
(RECORD_ID NUMBER not nullconstraint MERCHANT_FILE_UPLOAD_RECORD_PKprimary key,OID_TRADERNO VARCHAR2(32),PHOTO_TYPE VARCHAR2(64),PHOTO_SIZE NUMBER(32),PHOTO_ID VARCHAR2(256),CREATE_TIME TIMESTAMP(6),UPDATE_TIME TIMESTAMP(6),BATCH_ID VARCHAR2(32),FILE_MD5 VARCHAR2(64)
)
/comment on column MERCHANT_FILE_UPLOAD_RECORD.RECORD_ID is '主键id'
/comment on column MERCHANT_FILE_UPLOAD_RECORD.OID_TRADERNO is '商户号'
/comment on column MERCHANT_FILE_UPLOAD_RECORD.PHOTO_TYPE is '照片类型'
/comment on column MERCHANT_FILE_UPLOAD_RECORD.PHOTO_SIZE is '照片大小,单位为字节'
/comment on column MERCHANT_FILE_UPLOAD_RECORD.PHOTO_ID is '照片ID,返回的照片ID'
/create index CREATE_TIME_INDEXon MERCHANT_FILE_UPLOAD_RECORD (CREATE_TIME)
/create unique index MERCHANT_FILE_UPLOAD_UINDEXon MERCHANT_FILE_UPLOAD_RECORD (OID_TRADERNO, PHOTO_TYPE, BATCH_ID)
/create index MD5__INDEXon MERCHANT_FILE_UPLOAD_RECORD (FILE_MD5)
/
接口设计
一 附件上传接口
请求报文:
参数名 | 出现要求 | 描述 |
---|---|---|
bankMchtId | M(18) | 商户号 |
batchId | M(32) | 文件上传批次号,用于文件上传确认 |
photoType | M(2) | 上传照片的类型(见字典6.5) |
photo | M | Base64编码的照片,将编码后的****+*替换成*-**** |
二 .附件确认
请求报文:
参数名 | 出现要求 | 描述 |
---|---|---|
bankMchtId | M(18) | 商户号 |
batchId | M(32) | 文件上传批次号,用于文件上传确认 |
代码实现
碰到几个问题
图片转base64是需要把 *+*替换成*-*
base64转码采用
java.util.Base64
编码:
Base64.getEncoder().encodeToString(Files.readAllBytes(Paths.get("微信图片_20201104162519.jpg"))).replaceAll("\\+", "-")
解码:
Base64.getDecoder().decode(reqVO.getPhoto().replaceAll("-", "+"))
图片超过2MB,被springboot自带的tomcat 限制无法正常上传.
application.properties springboot 1.5.版本
需要设置: server.tomcat.max-http-post-size=-1
参考文档:
- https://www.cnblogs.com/xyabk/p/9012612.html
通过API接口实现图片上传相关推荐
- oAuth2.0商品发布API接口,店铺上传接口,店铺商品发布接口,超详细的介绍
一.新商品发布接口,商品上下架接口,店铺上传接口,新的接口对接方式文档如下: 第一步:打开开放平台链接:https://open.taobao.com/docV3.htm?spm=a219a.7386 ...
- php 接收 oc 图片上传,php yii2接口中图片上传
现在在给ios给接口,遇到了一些图片上传的问题,现在可以接收到ios传来的base64编码后的数据.我是否需要解码?解码又需要怎么处理才能把图片上传到服务器,并从服务器获取URL来存入到数据库呢?求大 ...
- 1688以图搜货接口,1688图片搜索接口,拍立淘接口,以图搜商品接口,图片上传搜索商品接口,按图搜索接口代码对接参数说明
一.接口说明: 有两种方式可以通过图片url地址请求获取到图片上的相似商品列表,然后再次拿到商品详情. 点击获取key和secret 方式一:可以用淘宝/1688平台外的图片进行先上传然后再搜索商品的 ...
- Jmeter接口测试之图片上传
1.先是在线程组下边创建一个http请求 2.所有的相关上传图片的设置都在http请求里面 3.里面的请求类型改成post,(图片上忘记改了)最重要的lmplementation一定要设置为java ...
- Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)
图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图.那么如何在Asp.Net Core Web Api实现图片上传存储以及生成缩略图呢?今天我就使用MongoDB作为图片存储 ...
- Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 原文:Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程 Asp.Net Cor ...
- themyleaf 图片上传_springboot thymeleaf 整合 百度富文本编辑器UEditor进行图片上传
项目中需要使用到富文本编辑器,找来找去发现百度UEditor富文本编辑器在国内最为常用因此就尝试引入.编辑器官网是:http://ueditor.baidu.com/website/index.htm ...
- 优化篇-“移动端”图片上传架构的变迁
做互联网应用少不了图片的支撑,图片的上传.浏览速度很大程度上决定着用户的体验,甚至用户去留,就因为其重要,所以,在任何时候,图片的架构和优化都在进行,不敢丝毫放松. 在以后几个章节,会从后端图片存储. ...
- PHP开发微信支付小微商户V3版本 图片上传、生成签名、平台证书获取、平台证书编号、敏感信息加密
吐槽一下,看微信支付小微商户的开发文档头都大了,什么是平台证书.什么是商户API证书...... 好了废话不多说下面明确几个名词: 商户API证书:是由权威CA颁发,用于有关微信支付等操作API接口使 ...
最新文章
- 漫画:禅道程序员的一天
- itunes app 下载链接的几种表现形式
- Java中的List接口实现类LinkedList
- C#3.0之神奇的Lambda表达式和Lambda语句
- springboot和quartz整合实现动态定时任务(持久化单节点)
- C Primer Plus note7
- 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
- POJ 3264:Balanced Lineup(RMQ模板题)
- android通过代码设置铃声_让你的手机铃声与众不同 (附ios音乐dj)
- C++ 代码整洁之道
- Chromium OS Developer Guide
- 【彩虹代刷v5.8】去除后门增加多套模板修复多处BUG[全开源免授权]
- 华为hicar支持车型列表_汽车大观| 华为的“汽车梦”
- 从solidWorks导出机器人URDF文件
- excel输入身份证号码变指数 及自动变数值如何解决?
- 防止U盘中毒的一个小技巧
- AI识别照片是谁,人脸识别face_recognition开源项目安装使用 | 机器学习
- Codeforces Round #672 (Div. 2) 	C2 - Pokémon Army (hard version)(贪心,维护变化值)
- 使用Ultra Librarian把bxl文件转为CAD Capture CIS的原理图库及Allegro的PCB封装库
- 随机生成1万个随机姓名与密码存入txt文本中
热门文章
- Nginx监听443端口配置SSL证书
- 转载颜色模式RGB888-RGB565
- C#练习题答案: GrandChild养成了叔叔的习惯【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
- Idea创建控制台程序
- vs2019中使用github看不到更改按钮如何解决
- 政务中心3D室内导航系统
- 2、HelloWorld的记事本编写
- 高中计算机学考什么时候,2019年江苏高中学业水平信息技术考试时间:12月15日-17日...
- docker kill 强制停止容器
- JavaScript中的Object对象