微信小程序上传图片到html,微信小程序-上传图片

news/2024/11/9 9:46:32/

在做小冰箱这个项目时,对物品的图片需要有一个上传功能。今天在这里讲一下这个功能是如何实现的。

首先讲述一下这个功能的完整描述:有一个上传图片的按钮,点击按钮,弹出操作菜单:从手机相册选择,拍照。点击从手机相册选择,调起图片库,选择图片;点击拍照,调起摄像头,点击拍照按钮,拍出照片。获取图片后,在上传图片按钮下显示预览图片。点击表单确认按钮,提交。

下面来看一下具体实现:

上传图片按钮

html :

图片:

script :

data = {

statApi : config.statApi,

baseApi : config.baseApi, //http://127.0.0.1

goods_photo: '',

goods_photo_flag: false,

goods_photo_url: '',

flag_tp: false

}

methods = {

uploadImg () {

console.log('shangchan')

let _this = this

wx.showActionSheet({

itemList: ['从手机相册选择', '拍照'],

success (res) {

console.log(res.tapIndex)

if (res.tapIndex == 0) {

_this.chooseImage()

}

if (res.tapIndex == 1) {

_this.toTakePhoto()

}

},

fail (res) {

console.log(res.errMsg)

}

})

}

}

从手机相册选择

chooseImage() {

let _this = this

wx.chooseImage({

count: 1,

sizeType: ['original', 'compressed'],

sourceType: ['album', 'camera'],

success (res) {

// tempFilePath可以作为img标签的src属性显示图片

const tempFilePaths = res.tempFilePaths

console.log('从本地选择相片成功')

_this.goods_photo = tempFilePaths[0]

_this.goods_photo_flag = true

_this.$apply()

_this.uploadImg()

}

})

}

拍照

html:

style:

.sec_camera {

width: 100%;

height: 500rpx;

position: fixed;

top: 0;

z-index: 10;

}

.btn_photo {

width: 100rpx;

height: 100rpx;

border-radius: 100rpx;

position: fixed;

z-index: 10;

left: 50%;

top: 510rpx;

transform: translateX(-50%);

background-color: lavender;

}

script :

toTakePhoto() {

this.flag_tp = true

this.$apply()

}

takePhoto() {

console.log('takePhoto')

let _this = this

const ctx = wx.createCameraContext()

ctx.takePhoto({

quality: 'high',

success: (res) => {

_this.goods_photo = res.tempImagePath

console.log('拍照成功')

_this.goods_photo_flag = true

_this.$apply()

_this.uploadImg()

}

})

}

上传图片到静态资源库

uploadImg() {

let _this = this

wx.uploadFile({

// url: 'http://127.0.0.1/images/upload', //仅为示例,非真实的接口地址

url: _this.baseApi+'/images/upload', //仅为示例,非真实的接口地址

filePath: _this.goods_photo,

name: 'file',

formData: {

'user': 'test'

},

success (res){

const data = JSON.parse(res.data)

console.log('从本地上传相片到服务器成功')

_this.goods_photo_url = data.image_url

_this.flag_tp = false

_this.$apply()

},

fail (res){

console.log('从本地上传相片到服务器失败')

_this.flag_tp = false

_this.$apply()

console.log(res)

}

})

}

服务器上传node实现

var express = require('express');

var app = express();

var formidable = require('formidable');

var fs = require('fs');

app.use('/statics', express.static('statics'));

app.post('/upload', function (req, res) {

var form = new formidable.IncomingForm();

form.parse(req, function(error, fields, files) { fs.writeFileSync("/Users/xz/files/statics/images_user/goods_photos/"+files.file.name,fs.readFileSync(files.file.path));

let image_url = "/statics/images_user/goods_photos/" + files.file.name

res.json({'success':true,'msg':'上传成功!','image_url':image_url});

});

});

module.exports = app;

表单提交

formSubmit(e) {

let form_data = {

url : this.goods_photo_url

}

let _this = this

$.post({

url: '/fridgeGoods/addFridgeGoods',

method: 'POST',

data: form_data,

success: function (res) {

if(res.data.err_code == 0){

//提交成功

}

}

})

}

注意: 要用NGINX部署静态图片库,才可以访问到图片资源

这就是小程序里用到的一个需要照片上传的功能。


http://www.ppmy.cn/news/583704.html

相关文章

java html转图片格式_java把html转成图片的方法

代码 1.1 html模版 static String HtmlTemplateStr = " "body {background-color: yellow}"+ "h1 {background-color: #00ff00}"+ "h2 {background-color: transparent}"+ "p {background-color: rgb(250,0,255)}"+ "p.no2 …

java canvas 打开图片_一步步教你利用Canvas对图片进行处理

前言 Canvas,中文译为“画布”,HTML5中新增了元素,可以结合JavaScript动态地在画布中绘制图形。 今天,我们不讲Canvas的图形绘制,而是讲如何对图片进行处理,话不多说了,来一起看看详细的介绍吧。 大概流程非常简单,主要分为以下三个步骤: Canvas图片处理 是的,就像把…

js将图片上传服务器文件夹下,Egg.js 实现向服务器上传图片

1.安装时间处理 及 压缩 模块 yarn add silly-datetime pump 2.文件保存路径 config/config.default.js config.uploadDir = app/public/avatar/upload; 3.创建tools service app/service/tools.js use strict; const Service = require(egg).Service; const path = require(&q…

Obsidian中HTML本地图片无法显示问题

问题分析&#xff1a;我之前在记笔记的markdown中插入图片时&#xff0c;都是用<img style"float: middle;" src"imgs/lw68.png" width"15%" heigth"3%"> 这样的形式&#xff0c;好处是方便大小和位置的调节。但用Obsidian直接…

《kafka 核心技术与实战》课程学习笔记(七)

生产者压缩算法 怎么压缩&#xff1f; 压缩&#xff08;compression&#xff09;秉承了用时间去换空间的经典 trade-off 思想&#xff0c;具体来说就是用 CPU 时间去换磁盘空间或网络 I/O 传输量&#xff0c;希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。…

MySQL架构介绍

MySQL架构介绍 和其它数据库相比&#xff0c;MySQL有点与众不同&#xff0c;它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和…

文献学习-联合抽取-Joint entity and relation extraction based on a hybrid neural network

目录 1、Introduction 2、Related works 2.1 Named entity recognition 2.2 Relation classification 2.3 Joint entity and relation extraction 2.4 LSTM and CNN models On NLP 3、Our method 3.1 Bidirectional LSTM encoding layer 3.2 Named entity recogniton …

【面试题16】Linux下面如何查看CPU,磁盘,内存,网络等资源使用情况

文章目录 一、概览二、top命令2.1 使用方法2.2 输出解释 三、htop命令3.1 安装方法3.2 使用方法3.3 输出解释 四、free命令4.1 使用方法4.2 输出解释 五、uptime命令5.1 使用方法5.2 输出解释 六、查看磁盘情况6.1 df命令6.2 du命令 七、查看网络情况7.1 iftop命令7.2 nload命令…