小程序上传帖子(含有文字图片的微信验证)

image-20200710152728342

public.js

var graceJS = require('../../utils/grace.js');
import { config } from '../../config.js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imglist: [],
    title:'',
    content:'',

  },

  delImg(e) {
    let index = e.currentTarget.dataset.index;
    let array = [];
    console.log(index);
    for (var i = 0; i < this.data.imglist.length; i++) {
      if (i !== index) {
        array.push(this.data.imglist[i])
      }
    }
    console.log(array);
    this.setData({
      imglist: array,
    })
  },

  upimg() {
    let that = this
    var url = config.api_base_url + "upload_pic"
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        const tempFilePaths = res.tempFilePaths;
        wx.showLoading({
          title: '上传中',
        })
        wx.uploadFile({
          url,
          filePath: tempFilePaths[0],
          name: 'file',
          success(res) {
            console.log(res.data);
            wx.hideLoading()
            if (res.data == '0') {
                graceJS.msg('上传失败');
            }else{
              console.log(res.data)
              if (res.data.indexOf("非法图片")>=0){
                graceJS.msg(res.data);
              } else {
                graceJS.msg("上传成功");
                var array = that.data.imglist.concat(res.data)
                that.setData({
                  imglist: array,
                })
              }
            }
            
          }
        })

      }
    })
  },
  zf_title:function(e){
    this.setData({
      title: e.detail.value
    })
  },
  zf_content: function (e) {
    this.setData({
      content: e.detail.value
    })
  },
  tj_info: function (event){
    var that = this;
    console.log("event", event)
    var title = this.data.title;
    var content = this.data.content;
    console.log(title)
    console.log(content)
    var imglist = that.data.imglist;
    var uid = wx.getStorageSync('user').id
    if (!title && !content) {
      graceJS.msg("请填写完整");
    } else {
      //写入数据库
      if (uid != undefined) {
        graceJS.post(
          config.api_base_url + 'tiezi_add',
          {title:title, content:content,uid:uid,imglist:imglist}, 
          'json',
          {}, // 此处 {} 代表不设置 header 数据
          function(res){
            if (res.result == 1) {
              graceJS.msg(res.msg);
              setTimeout(()=>{
                graceJS.navigate('../discover/discover','switchTab');
              },2000)
            }else{
              graceJS.msg(res.msg);
            }
          }
        );
      }else{
        graceJS.msg("用户ID获取失败");
      }
     
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

publish.wxml

<!--pages/publish/publish.wxml-->
<view>
    <form > 
        <view class="publish_a">
            <view class="publish_a1">
                <view class="publish_a1_a">
                    <input type="text" name="title" bindinput="zf_title" placeholder="输入标题" />
                </view>
                <view class="publish_a1_b">
                    <textarea name="content"  bindinput="zf_content"  placeholder="输入内容文字"></textarea>
                </view>
                <view class="publish_a1_c">
                    <view class="publish_a1_c1" >
                        <image src="../../img/127.png" bindtap="upimg"></image>
                    </view>
                    <view class="publish_a1_c2">
                        <view wx:for="{{imglist}}" bindtap="delImg" data-index="{{index}}">
                            <image src="{{item}}" ></image>
                            <text>X</text>
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view class="publish_b" bind:tap="tj_info">发布帖子</view>
    </form>
</view>

publish.wxss

/* pages/publish/publish.wxss */
page{
    padding-bottom: 120rpx;
}
.publish_a{
    padding: 20rpx;
}
.publish_a1{
    background-color: #f5f2f4;
    padding: 20rpx;
}
.publish_a1_a input{
    width: 100%;
    height: 80rpx;
    line-height: 80rpx;
    font-size: 28rpx;
    font-weight: bold;
}
.publish_a1_b textarea{
    width: 100%;
    font-size: 28rpx;
}
.publish_a1_c1{
    margin-bottom: 20rpx;
}
.publish_a1_c1 image{
    display: block;
    width: 200rpx;
    height: 200rpx;
}
.publish_a1_c2{
    display: flex;
    flex-wrap: wrap;
}
.publish_a1_c2 view{
    position: relative;
    width: 200rpx;
    height: 200rpx;
    margin-right: 20rpx;
    margin-bottom: 20rpx;
}
.publish_a1_c2 image{
    display: block;
    width: 100%;
    height: 100%;
}
.publish_a1_c2 text{
    display: block;
    position: absolute;
    right: 0;
    top: 0;
    width: 40rpx;
    height: 40rpx;
    text-align: center;
    line-height: 40rpx;
    font-size: 26rpx;
    color: #fff;
    background-color: rgba(0,0,0,0.3);
}

.zf_btn{
  width: 500px;
}
.publish_b{
    position: fixed;
    left: 0;
    bottom: 0;
    /* width: 100%; */
    background-color: #a67f4a;
    line-height: 100rpx;
    text-align: center;
    color: #fff;
    font-size: 30rpx;
    min-width: 380px;
  width: 100%;
  padding: 0;
  margin: 0;
}

tp

引入
use EasyWeChat\Factory;

public function __construct ( Request $request = null )
    {
        $this->config = [
            'app_id' => 'wx4**********fd45a65',
            'secret' => '082dec1****5b93d286c093e01',
            'response_type' => 'array',
            'log' => [
                'level' => 'debug',
                'file' => __DIR__.'/log/wechat.log',
            ],
        ];
        $this->uid = '';
    }

public function tiezi_add(){
        $data = input('post.');
        if($data['imglist']!=[]){
            foreach ($data['imglist'] as $k => $vo) {
                $data['imglist'][$k] = trim($vo);
            }
            $data['album'] = trim(implode(',', $data['imglist']));
        }
        unset($data['imglist']);

        $data['cid'] = 17;
        $data['status'] = 1;
        $data['sort'] = 0;
        $data['ctime'] = time();
        if(!isset($data['album'])){
            return jserror('至少上传一张图片 ');
        } 
        //验证
            $miniProgram = Factory::miniProgram($this->config);
            $result = $miniProgram->content_security->checkText($data['content']);
            $result2 = $miniProgram->content_security->checkText($data['title']);
            if($result['errcode']!='0'){
                return jserror('含有非法关键词');
            }
            if($result2['errcode']!='0'){
                return jserror('含有非法关键词');
            }

        //保存
        $res = Db::name('post')->insert($data);
        if($res){
            return jssuccess('发布成功');
        }else{
            return jserror('发布失败');
        }
    }
  
public function upload_pic(){
        $file = request()->file('file');
        $info = $file->validate(['ext'=>config()['web']['file_ext']])->move('./public/upload/admin/file');
        $getSaveName = str_replace('\\', '/', $info->getSaveName());//win下反斜杠替换成斜杠
        $msg = 'http://'.$_SERVER['SERVER_NAME'].'/public/upload/admin/file/'.$getSaveName;
         if(is_file('./public/upload/admin/file/'.$getSaveName)){
          //验证图片
            $miniProgram = Factory::miniProgram($this->config);
            $result = $miniProgram->content_security->checkImage('./public/upload/admin/file/'.$getSaveName);
            if($result['errcode']!='0'){
              return '非法图片';
            }else{
              return $msg;
            }
          ################
        }else{
            return '0';
        }

        
    }

高颜值后台管理系统免费使用 ### 子枫后台管理系统 ###,可在宝塔面板直接安装

欢迎关注我的公众号:子枫的奇妙世界,获得独家整理的学习资源和日常干货推送。
如果您对我的其他专题内容感兴趣,直达我的个人博客:www.wangmingchang.com

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352