uni-app: un pequeño programa para cargar imágenes locales e identificar tarjetas de identificación de manera inteligente

Directorio de artículos

  • prefacio
  • 1. Diagrama de ejemplo
  • 2. Proceso de implementación
    • 1. Complete la dirección api para enviar imágenes
    • 2. Obtén fotos locales
    • 3. Cargue la imagen local en el servidor del desarrollador
  • Tres , el código de implementación específico
  • 4. Identificación inteligente de la tarjeta de identificación
  • Resumir


prefacio

La función de cargar imágenes locales es muy común, entonces, ¿cómo implementarla?

1. Diagrama de ejemplo

2. Proceso de implementación

1. Complete la dirección api para enviar imágenes

El envío de imágenes también debe llamar a la interfaz api correspondiente, por lo que nuestra primera tarea es asegurarnos de que la dirección para enviar imágenes esté disponible.

En este punto, puede crear un nuevo archivo api en el directorio raíz del archivo del proyecto y luego crear un nuevo archivo index.js

En el archivo index.js:

// 公共地址
var baseURL = "https://meituan.thexxdd.cn/api";

// 图片上传接口
let IMAGEURL = baseURL + '/upload_picture';


// 将该对象暴露出去给其他文件使用
export {
	IMAGEURL,
	AICARD
}

direccion publica

// 公共地址
var baseURL = "https://meituan.thexxdd.cn/api";
Definir la dirección para el envío de imágenes.
// 图片上传接口
let IMAGEURL = baseURL + '/upload_picture';

Puede ver que esta es una dirección pública y un empalme de cadena de la dirección de la imagen enviada , de modo que se escribe la dirección API para enviar la imagen, pero aún debe enviar los parámetros correspondientes, que es la dirección de la imagen que desea para enviar, entonces, ¿cómo obtener el local ¿Qué pasa con las imágenes? Esto requiere que verifique la documentación de uni-app Hay una API correspondiente en la documentación, que se puede realizar llamándola.

2. Obtén fotos locales

# uni.elegirMedios(OBJETO)

Tome o seleccione una foto o un video del rollo de la cámara de su teléfono.

Dirección del sitio web oficial: uni.chooseVideo(OBJECT) | sitio web oficial de la aplicación uni

OBJETO descripción del parámetro

nombre del parámetro tipo valores predeterminados requerido ilustrar
contar Número 9 (Nota: ios no puede ser mayor que 9) No El número máximo de archivos que se pueden seleccionar
tipo de medio Matriz.<cadena> ['imagen', 'video'] No Tipo de archivo
tipo de fuente Matriz.<cadena> ['álbum', 'cámara'] No Fuentes seleccionadas para imágenes y videos
maxDuration Número 10 No El tiempo máximo de grabación de grabación de video, en segundos. El rango de tiempo es entre 3s y 30s
tipo de letra Matriz.<cadena> ['original', 'comprimido'] No Solo es válido cuando mediaType es una imagen, ya sea para comprimir el archivo seleccionado
cámara Cadena 'atrás' No Solo es válido cuando sourceType es cámara, use cámara frontal o trasera
éxito función No Función de devolución de llamada para una llamada de interfaz exitosa
fallar función No Función de devolución de llamada para falla de llamada de interfaz
completo función No La función de devolución de llamada del final de la llamada de interfaz (la llamada se ejecutará con éxito o fallará)

OBJECT.mediaType valor legal

valor ilustrar
imagen Solo puede tomar una foto o elegir una foto del álbum de fotos
video Solo puede grabar videos o elegir videos del carrete de la cámara
mezcla Se pueden seleccionar imágenes y videos.

OBJECT.sourceType valor legal

valor ilustrar
álbum seleccionar del álbum
cámara disparar con cámara

Valor legal de OBJECT.camera

valor ilustrar
atrás Usa la cámara trasera
frente Usa la cámara frontal

descripción del parámetro de retorno de éxito

nombre del parámetro tipo ilustrar
archivos temporales Matriz.<cadena> Lista de archivos temporales locales
tipo Cadena Tipo de archivo, los valores válidos son imagen, video, mezcla

La estructura de res.tempFiles

nombre del parámetro tipo ilustrar
ruta del archivo temporal Cadena Ruta del archivo temporal local (ruta local)
tamaño Número Tamaño de archivo temporal local, unidad B
duración Número la duración del vídeo
altura Número altura de vídeo
ancho Número ancho de vídeo
thumbTempFilePath Cadena Ruta del archivo temporal de miniaturas de video
Tipo de archivo Cadena Tipo de archivo

valor legal de fileType

valor ilustrar
imagen imagen
video video

   Ejemplo de uso:

/ 定义一个函数专门用来上传图片
// 参数说明:
// 1.图片上传的地址,
// 2.上传成功的说明
// 3.上传失败的说明
var upLoad = function(imageUrl, suc_desc, err_desc) {
	return new Promise((resolve, reject) => {
		uni.chooseMedia({
			count: 1,    //所要上传图片的数量
			mediaType: ['image'],   //所要上传文件的类型
			sourceType: ['album', 'camera'],    //所要上传文件的来源
			sizeType: ['original', 'compressed'],   //所要上传文件是否需要压缩
			success(res) {
				console.log(res.tempFiles)
			}
		})
	})
}


// 暴露该函数
export {
	upLoad
}

3. Cargue la imagen local en el servidor del desarrollador

uni.uploadFile(OBJETO)

将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data
如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。

OBJECT 参数说明

参数名 类型 必填 说明 平台差异说明
url String 开发者服务器 url
files Array 是(files和filePath选其一) 需要上传的文件列表。使用 files 时,filePath 和 name 不生效。 App、H5( 2.6.15+)
fileType String 见平台差异说明 文件类型,image/video/audio 仅支付宝小程序,且必填。
file File 要上传的文件对象。 仅H5(2.6.15+)支持
filePath String 是(files和filePath选其一) 要上传文件资源的路径。
name String 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
header Object HTTP 请求 Header, header 中不能设置 Referer。
timeout Number 超时时间,单位 ms H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)
formData Object HTTP 请求中其他额外的 form data
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

注意

  • App支持多文件上传,微信小程序只支持单文件上传,传多个文件需要反复调用本API。所以跨端的写法就是循环调用本API。
  • hello uni-app中的客服反馈,支持多图上传。uni-app插件市场中也有多个封装的组件。
  • App平台选择和上传非图像、视频文件,参考uni-app 选择和上传非图像、视频文件 - DCloud问答
  • 网络请求的 超时时间 可以统一在 manifest.json 中配置 networkTimeout
  • 支付宝小程序开发工具上传文件返回的http状态码为字符串形式,支付宝小程序真机返回的状态码为数字形式

files参数说明

files 参数是一个 file 对象的数组,file 对象的结构如下:

参数名 类型 必填 说明
name String multipart 提交时,表单的项目名,默认为 file
file File 要上传的文件对象,仅H5(2.6.15+)支持
uri String 文件的本地地址

Tip:

  • 如果 name 不填或填的值相同,可能导致服务端读取文件时只能读取到一个文件。

success 返回参数说明

参数 类型 说明
data String 开发者服务器返回的数据
statusCode Number 开发者服务器返回的 HTTP 状态码

   用法示例:

uni.uploadFile({
					url: imageUrl, // 上传图片的接口地址
					filePath: tempFilePath,     //所要上传的图片地址
					name: 'file',   //所要上传的文件类型
					header: {
						accept: 'application/json'
					},
					success: (uploadFileRes) => {    //成功的回调函数
						console.log(uploadFileRes);
						resolve(uploadFileRes)
					}
				});

三、具体实现代码

以上就是我们所要使用的api的用法讲解,接下来就到了如何利用该方法实现图片的上传啦,接下来我将通过一个案例实现。

步骤1  ——   封装提交图片的地址

关于这一步在文章开头已经描述,在这里不再赘述

api 文件夹下  ——  index.js文件

步骤2  ——    封装专门用来提交图片的函数

api 文件夹下  —— misc.js 文件

// 定义一个函数专门用来上传图片
// 参数说明:
// 1.图片上传的地址,
// 2.上传成功的说明
// 3.上传失败的说明
var upLoad = function(imageUrl, suc_desc, err_desc) {
	return new Promise((resolve, reject) => {
		uni.chooseMedia({
			count: 1, //所要上传图片的数量
			mediaType: ['image'], //所要上传文件的类型
			sourceType: ['album', 'camera'], //所要上传文件的来源
			sizeType: ['original', 'compressed'], //所要上传文件是否需要压缩
			success(res) {
				const tempFilePath = res.tempFiles[0].tempFilePath
				uni.uploadFile({
					url: imageUrl, // 上传图片的接口地址
					filePath: tempFilePath,     //所要上传的图片地址
					name: 'file',   //所要上传的文件类型
					header: {
						accept: 'application/json'
					},
					success: (uploadFileRes) => {    //成功的回调函数
						console.log(uploadFileRes);
						resolve(uploadFileRes)
					}
				});
			}
		})
	})
}


// 暴露该函数
export {
	upLoad
}

步骤3 —— 在所在的页面文件中引入以上步骤1和步骤2的方法

例如在  index.vue 中,在相应的添加图片点击事件中调用以上的方法即可

	// 添加图片的点击事件
			async addImage() {
				// 调用上传图片的函数并传入参数
				const result = await upLoad(IMAGEURL, '上传中', '上传失败');
				const image = JSON.parse(result.data).data;
				this.baseData.push(image);
			},

四、身份证的智能识别

Después de aprender los métodos anteriores, la identificación inteligente de las tarjetas de identificación es muy simple. Todavía puede seguir los pasos anteriores, llamar a la interfaz de identificación inteligente correspondiente, llamar a la interfaz API mencionada anteriormente en uni-app y luego asignar el valor de retorno a la tabla correspondiente Un solo elemento es suficiente, ¿lo has aprendido? ¡Ir!

Supongo que te gusta

Origin blog.csdn.net/Bonsoir777/article/details/128473611
Recomendado
Clasificación