关于微信表单添加与图片上传

图片上传与表单内容提交时异步执行,图片先行长传,然后点击提交时表单的内容才执行添加(图片上传是会生成一个id,这是应将id存入缓存中,等表单内容提交时执行一个修改的操作将表单内容保存)

 

一、文件上传部分(图片)

wxml代码

 

 (代码截图与效果图)

 wxml代码部分:

 1 <view class="view">
 2     <form catchsubmit="formSubmit">
 3         <text>商品名称:</text>
 4         <input type="text" name="goodsname" class="input" />
 5         <text>商品价格:</text>
 6         <input type="text" name="price" class="input" />
 7         <text>上传图片</text>
 8         <view>
 9             <button bindtap="uploadimg">点击选择上传图</button>
10         </view>
11         <image src='{{source}}' style='width:600rpx; height:600rpx' />
12         <view class="but">
13             <button style="margin: 30rpx 0" type="primary" formType="submit" >添加</button>
14         </view>
15     </form>
16 </view>

 

js代码部分

 

 1   uploadimg: function () {
 2     var that = this;
 3     wx.chooseImage({  //从本地相册选择图片或使用相机拍照
 4       count: 1, // 默认9
 5       sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
 6       sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 7 
 8       success: function (res) {
 9         //console.log(res)
10         //前台显示
11         that.setData({
12           source: res.tempFilePaths
13         })
14 
15         // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
16         var tempFilePaths = res.tempFilePaths
17         wx.uploadFile({
18           url: 'http://www.xxxxx.com/index.php/wxxcx/xxxx/uploadimg',
19           filePath: tempFilePaths[0],
20           name: 'file',
21           success: function (res) {
22             //打印
23             console.log(res.data)
24           }
25         })
26 
27       }
28     })
29   },

 

 

 

php控制器代码部分

 1     //图片上传
 2     public function uploadimg()
 3     {
 4         $file = request()->file('file');
 5         if ($file) {
 6             $info = $file->move('uploads/weixin/');
 7             if ($info) {
 8                 $file = $info->getSaveName();
 9                 //入库时应将完整的路径入库 方便展示用
10                 $file="E:."/".xxxx."/".public."/".uploads."/".weixin"."/".$file;
11                 $data= \app\wxxcx\model\Pyg::create(['image'=>$file],true)->toArray();
12                 //将商品id存入缓存
13                 cache('gid',$data['gid']);
14                 print_r( $data);
15                 $res = ['errCode'=>0,'errMsg'=>'图片上传成功','file'=>$file];
16                 return json($res);
17             }
18         }
19 
20     }

 

 

第二步操作:图片上传完成后表单数据添加部分

 

wxml代码同上,此处略

 

js代码部分:

 2 Page({
 3 
 4   /**
 5    * 页面的初始数据
 6    */
 7   data: {
 8 
 9   },
10 
11   /**
12    * 生命周期函数--监听页面加载
13    */
14   onLoad: function (options) {
15 
16   },
17   formSubmit(e) {
18     //接受表单提交的数据
19     let goodsname = e.detail.value.goodsname
20     let price = e.detail.value.price
21     //发送请求
22     wx.request({
23       url: 'http://www.xxxx.com/index.php/wxxcx/xxx/index', //的接口地址
24       data: {
25         goodsname: goodsname,
26         price: price
27       },
28       dataType: "json",
29       method: "POST",
30       responseType: "text",
31       header: {
32         'content-type': 'application/json' // 默认值
33       },
34 
35       success(res) {
36         let gid = res.data.data.gid
37         console.log(res.data.data.gid)
38         //判断是否添加成功
39         if (res.data.code == 200) {
40           //将商品id存入缓存 (可不写)
41           wx.setStorage({
42             key: "gid",
43             data: gid
44           })
45         }
46         //添加完页面跳转到展示页面
47         wx.switchTab({
48           url: '/pages/demo2/demo2'
49         })
50       }
51     })
52 
53     console.log(e.detail.value)
54     console.log(goodsname)
55   },
56 
57   //图片上传部分
58   uploadimg: function () {
59     var that = this;
60     wx.chooseImage({  //从本地相册选择图片或使用相机拍照
61       count: 1, // 默认9
62       sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
63       sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
64 
65       success: function (res) {
66         //console.log(res)
67         //前台显示
68         that.setData({
69           source: res.tempFilePaths
70         })
71 
72         // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
73         var tempFilePaths = res.tempFilePaths
74         wx.uploadFile({
75           url: 'http://www.xxx.com/index.php/wxxcx/xxx/uploadimg',
76           filePath: tempFilePaths[0],
77           name: 'file',
78           success: function (res) {
79             //打印
80             console.log(res.data)
81           }
82         })
83 
84       }
85     })
86   },
87 })

 

php代码部分

 1    //保存数据  添加
 2     public function index()
 3     {
 4        $data = input();
 5        //从缓存中获取商品id
 6        $gid = cache('gid');
 7        \app\wxxcx\model\xxx::update($data,['gid'=>$gid],true)->toArray();
 8        $data = \app\wxxcx\model\xxx::get($gid);
 9        if ($data){
10            return json(['code'=>200,'msg'=>'success','data'=>$data]);
11        }
12     }

注:因为采取异步上传,图片先保存到数据库后表单内容才提交保存在数据库,所以图片上传后要将添加的id存入缓存当中,表单提交后要从缓存中将id取出,执行修改的操作将数据添加入库

posted @ 2020-12-27 22:14  Conqueror·  阅读(701)  评论(0编辑  收藏  举报