拼图小游戏增加上传图片功能(二)

223 阅读1分钟

之前我们在小游戏端做了上传图片的功能,但还没有接入到我们的后端,今天我们就来说下,如何接入到我们的后端。废话少说,下面直接开始。

1. 我们用的后端是基于thinkphp6.0框架的。我们俩写一个接口来接收小游戏端传过来的图片文件。

(1)打开我们的后台项目。

image.png

(2)在我们之前新增的api控制器上新增一个接收图片文件的方法。


    /**

     * @AdminAuth(auth=false,menu=false,login=false,title="Index")

     */

    public function upload(){

        $update = UploadService::instance();

        $update->setFile(request()->file("file"));

        $res  = $update->save();

        var_dump($res);

    }

 

(3)记得在顶部引入

use quick\admin\library\service\UploadService;

(4)接下来,我们在接口的测试工具上测试下,增加一个file参数

image.png

(5)上传成功,可以看到我们打印出来的信息。

image.png

image.png (6)回到api控制器,将数据保存到数据库里。


    /**

     * @AdminAuth(auth=false,menu=false,login=false,title="Index")

     */

    public function upload(){

        $update = UploadService::instance();

        $update->setFile(request()->file("file"));

        $res  = $update->save();

        if($res && $res['uploaded']){

            $model = new Image();

            $model->save([

                'user_id'=>0,

                'name' => $res['name'],

                'image_url' => $res['url'],

                'is_delete' => 0,

            ]);

            return json([

                'code' => 0,

                'data' => $model->toArray(),

            ]);

     

        }

        return json([

            'code' => -1,

            'data' => '上传失败',

        ]);

 

    }

 

(7)在数据库可以看到刚才上传图片文件信息了。

image.png

2. 打开小游戏项目的game.ts 脚本。

(1)之前封装的上传图片的函数有问题。我们换一个,改成wx.uploadFile的。


    sendfile(api_url, file, callback) {

        const uploadTask = this.wx.uploadFile({

          url: api_url,

          filePath: file,

          name'file',

          successfunction(res) {

            console.log(res)

            if (res.statusCode === 200) {

              const data = JSON.parse(res.data);

              callback(null, data);

            } else {

              callback('请求失败: ' + res.statusCode, null);

            }

          },

          failfunction() {

            callback('请求错误', null);

          }

        });

     

        uploadTask.onProgressUpdate(function(res) {

          // 可以在这里获取上传进度

          console.log('上传进度:' + res.progress);

          console.log('已经上传的数据长度:' + res.totalBytesSent);

          console.log('预期需要上传的数据总长度:' + res.totalBytesExpectedToSend);

        });

      }

  (2)在选择图片的函数chooseFile处调用上传图片函数。

               let api_url="https://xxxx.xxxx.cn/index.php/admin/api/upload" 
                console.log(res['tempFiles'][0]['tempFilePath'] )

                console.log('ffff');

                this.sendfile(api_url,res['tempFiles'][0]['tempFilePath'] ,function(error, data) {

                    if (error) {

                      console.error(error);

                      return;

                    }

                    console.log(data);

                  });

(3)测试了一下,可以上传图片了。

image.png

好了,今天就先介绍到这里了。可能写的过程中还有很多不好的地方,希望大家能指出来,在此,谢谢大家