微信小程序上传图片及文件(上传、下载、删除及预览)

微信小程序上传附件

上传文件及图片 下载,预览、删除

附言:
如果使用wx.request时,微信会限制wx.request无法post提交上传文件
1.是微信小程序没有提供fromdata对象,(也就是无法把表单的内容封装成fromdata数据)
2.微信小程序也没有file的表单元素。(应该腾讯不想我们通过wx.request上传文件,让我们用wx.upload去每次一个一个的上传)
其实也并非wx.request就无法上传文件,只要按照multipart/form-data提交数据的格式封装数据即可(说白了就是字符串拼接)
网址链接:https://www.cnblogs.com/fps2tao/p/14223497.html

自定义封装组件 哪儿用哪儿调用即可

下面是使用微信官方自带的上传函数开发

wxml代码
<!-- <view>上传文件(我是子组件)</view> -->
<view class="fileImgAll">
    <view class="imginfo"
        style="border-bottom:{
       {
       attachmentImgFile&&attachmentImgFile.length!==0?'1px dashed #999':''}};display: {
       {
       fileDetail?'none':'block'}};">
        <!-- 点击上传文件按钮 -->
        <view bindtap="uploadAction" class="fileLeft">
            <i class="iconfont icon-weixin" style="color: rgb(13, 175, 75); font-size: larger;"></i>
            上传文件
        </view>
        <!-- 点击上传图片按钮 -->
        <view bindtap="uploadup" class="fileRight">
            <i class="iconfont .icon-xiangce" style="color: rgb(148, 24, 206);  font-size: larger;"></i>
            上传图片
        </view>
    </view>
    <view class="allStyle">
        <!-- 图片  文件  渲染  展示 -->
        <!-- 单据 展示 根据 渲染 数组的不同 -->
        <view wx:if="{
    {orderShowUp.id&&orderAttachment==='order_attachment'}}" wx:for="{
    {orderShowUp.attachment}}"
            wx:key="index" class="fileImg">
            <!-- 上传文件在此处渲染 -->
            <view class="fileAll" wx:if="{
    {item.mime_type!=='image/'+item.extension}}">
                <i bindtap="uploadDown" data-index="{
    {index}}" class="iconfont .icon-wenjian1"
                    style="color: rgb(14 153 234);  font-size: x-large;"></i>
                <i wx:if="{
    {fileDetail===false}}" bindtap="setDelArr" class='fileTips' data-index="{
    {index}}">X</i>
            </view>
            <!-- 如果上传相册是 gif类型 或者后台没返回 thumb文件流  在此处展示文件样式 但点击下载后 可直接预览-->
            <view class="fileAll" wx:if="{
    {item.mime_type==='image/'+item.extension&&!item.thumb}}">
                <i bindtap="listenerButtonPreviewImage" data-index="{
    {index}}" class="iconfont .icon-wenjian1"
                    style="color: rgb(14 153 234);  font-size: x-large;"></i>
                <!-- <i wx:if="{
   {fileDetail===false}}" bindtap="setDelArr" class='fileTips' data-index="{
   {index}}">X</i> -->
            </view>
            <!-- 上传图片 在此处渲染 -->
            <view class="imgStyle" wx:if="{
    {item.mime_type==='image/'+item.extension}}">
                <block>
                    <image mode='aspectFit' src="data:image/png;base64,{
    {item.thumb}}"
                        bindtap="listenerButtonPreviewImage" style="width: 100%;height: 100%;  border-radius: 10%;"
                        data-index="{
    {index}}" />
                    <i wx:if="{
    {fileDetail===false}}" bindtap="setDelArr" class='fileTips' data-index="{
    {index}}">X</i>
                </block>
            </view>
        </view>
    </view>
</view>
js 代码
// components/uploaddown/index.js
const app = getApp()
Component({
   
    /**
     * 组件的属性列表
     */
    properties: {
   
        count: {
    // 最多选择图片的张数
            type: Number,
            value: 9,
        },
        thumb: {
   
            type: Boolean,
            value: ''
        },
        orderShow: {
   
            type: Object,
        },
        attachment: {
   
            type: Array,
        },
        orderAttachment: {
   
            type: String,
        },
        fileDetail: {
   
            type: Boolean,
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
   
        fileList: [], // 需要上传的图片列表
        isAct: false,
        isSava: false,
        files: [],
        loading: false,
        storeList: [],
        imgModalBox: {
   
            visible: false,
            previewImage: '',
            imgWidth: 0,
            imgHeight: 0,
            original: false, // 查看原图
        },
        tempFilePaths: [], // 上传的附件 图片
        storeName: '', // 下载时需要传给路由的文件字段
        deleteFilePathName: '', // 获取删除图片路径名
        tempUnImgList: [], // 上传的文件列表
        itemFilePathName: '', // 获取上传时文件路径名
        itemFileUrlName: '', // 获取上传后 后端返回的文件路径名
        fileNamePath: '', // 截取数组的path
        fileData: [], // 上传文件后获取返回的结果  文件
        markFile: '', // 删除文件按钮  文件
        // deleFileList: [], // 删除时传给后台数组  文件
        allImgList: [],
        imageShow: false, // 图片上传完成是  渲染图片
        filesShow: false, // 文件上传成功后显示
        orderShowUp: {
   },
        titleImg: '',
        attachmentImgFile: [], // 区分单据和病例
        detailUrl: '',
    },

    attached() {
   
        const {
   
            orderShow,
            orderAttachment,
            fileDetail,
        } = this.properties;
        this.setData({
   
            orderShowUp: orderShow,
        })
        if (orderAttachment === "order_attachment") {
   
            this.setData({
   
                attachmentImgFile: orderShow.attachment
            })
       
  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 项目特点 - 前台参考"Hexo"的"Butterfly"设计,美观简洁,响应式体验好。 - 后台参考"element-admin"设计,侧边栏,历史标签,面包屑自动生成。 - 采用Markdown编辑器,写法简单。 - 评论支持表情、GIF动图输入回复等,样式参考Valine。 - 前后端分离部署,适应当前潮流。 - 接入第三方登录,减少注册成本。 - 留言采用弹幕墙,更加炫酷。 - 支持代码高亮和复制,图片,深色模式等功能,提升用户体验。 - 搜索文章支持高亮分词,响应速度快。 - 新增文章目录、推荐文章等功能,优化用户体验。 - 新增在线聊天室,支持撤回、语音输入、统计未读数量等功能。 - 新增aop注解实现操作日志功能。 - 支持动态权限修改,采用RBAC模型,前端菜单和后台权限实时更新。 - 后台管理支持修改背景图片,博客配置等信息,操作简单,支持上相册。 - 代码支持多种搜索模式(Elasticsearch或MYSQL),支持多种上模式(OSS或本地),可支持配置。Elasticsearch占内存较高,如果服务器配置太低,不建议使用。 - 新增网站导航功能,页面优雅美观。可自行添加自己常用的网站进行分类和排序。 - 新增聊天管理功能,方便清理垃圾聊天内容。 - 新增登录日志功能,随时查看用户的登录信息。 - 前台页面重新布局重构,页面布局更加简洁,首页加载速度更快。 - 前台首页文章列表顶部新增滚动消息,超级炫酷。 - 新增了监控用户是否授权的功能、增加了用户的体验性。 - 增加图片删除后也将该路径的图片删除的功能、大大提高了文件存储的利用率。 - 将接口进行**axios**二次封装、更利于接口的请求和响应。 - 新增本博客配套的**微信小程序**,可随时用手机浏文章。并且接入微信登录,减少注册成本。 - **微信小程序**新增每日新闻热搜功能、可随时查看热搜。 - 新增本博客配套的**App**,同时接入qq、微博登录,使用更加方便。 - 代码遵循阿里巴巴开发规范,利于开发者学习。 ## 技术介绍 **前端:** vue + vuex + vue-router + axios + vuetify + element + echarts + uniapp + uview + Html + Css + JavaScript **后端:** SpringBoot + nginx + docker + SpringSecurity + Swagger2 + MyBatisPlus + Mysql + Redis + elasticsearch + RabbitMQ + MaxWell + Websocket **其他:** 接入QQ,微博、微信第三方登录,接入腾讯云人机验证、websocket ## 运行环境 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
要在微信小程序中上文件,你可以使用 `wx.chooseImage` 或 `wx.chooseFile` 方法来上图片或其他文件。 1. `wx.chooseImage` 方法可以让用户选择图片并上至服务器,代码示例: ```js wx.chooseImage({ count: 1, // 最多可以选择的图片张数,默认1张 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { // 返回选定照片的本地文件路径列表,tempFilePaths可作为img标签的src属性显示图片 var tempFilePaths = res.tempFilePaths; wx.uploadFile({ url: '服务器地址', // 上接口地址 filePath: tempFilePaths[0], // 上文件路径 name: 'file', // 上文件名称 success: function (res) { // 上成功后的处理逻辑 } }) } }) ``` 2. `wx.chooseFile` 方法可以让用户选择文件并上至服务器,代码示例: ```js wx.chooseFile({ success(res) { // 选择文件后的处理逻辑 wx.uploadFile({ url: '服务器地址', // 上接口地址 filePath: res.tempFilePaths[0], // 上文件路径 name: 'file', // 上文件名称 success: function (res) { // 上成功后的处理逻辑 } }) } }) ``` 要图片文件,可以使用 `wx.previewImage` 方法来图片,代码示例: ```js wx.previewImage({ current: '当前图片的url', // 当前显示图片的链接,不填则默认为urls的第一张 urls: ['图片1的url', '图片2的url'] // 需要图片链接列表 }) ``` 对于其他类型的文件,可以使用 `wx.openDocument` 方法来打开,代码示例: ```js wx.openDocument({ filePath: '文件的本地路径', success: function (res) { // 打开文档成功的处理逻辑 } }) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值