关于小程序请求PHP服务端,返回字符串奇怪的问题

来源:8-18 最近新品接口编写

朴自然华子

2017-08-24

七月老师,我在尝试做一个可以从小程序上传图片到腾讯云cos的功能,根据官方文档,是需要先通过wx.uploadFile(),结合wx.chooseImage(),把文件用$_Files上传到我自己的PHP服务器之后,保存下来,获取一个真实的全路径图片地址srcPath,然后通过腾讯云cos的上传图片sdk,去上传。sdk已经测试通过了。目前就是有个怪异的地方(基础知识不扎实),明明我在服务器端已经把路径生成好,是一个字符串,并返回。(不知道这样返回对不对,是不是需要在服务器端或小程序端对这个字符串作什么处理?)如下图。

http://szimg.mukewang.com/599ee3590001201415540739.jpg

但是从小程序端那边接收到的data,就变成这样了。路径中的斜杠莫名其妙多了。

http://szimg.mukewang.com/599ee3ec0001464807650159.jpg

http://szimg.mukewang.com/599ee3ec00010f3d07990347.jpg

这是服务端的代码:

<?php
/**
 * Created by PhpStorm.
 * User: songshu
 * Date: 2017/8/23
 * Time: 22:03
 */

namespace app\api\controller\v1;


use app\api\controller\BaseController;
use think\Exception;

class Uploadtoserver extends BaseController
{
    public function UploadToServer()
    {
        if ($_FILES["sample"]["error"] > 0)
        {
            throw new Exception("文件为空");
        } else
        {
            $basedir ="d:/xampp/upload/";
            $filePath = $basedir . $_FILES["sample"]["name"];
            move_uploaded_file($_FILES["sample"]["tmp_name"],
                $filePath);
            return $filePath;
        }
    }
}

这是小程序端的js代码

Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

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

  },
  uploadSingleImage: function () {
    wx.chooseImage({
      success: function (res) {
        var tempFilePaths = res.tempFilePaths
        wx.uploadFile({
          url: 'http://z.cn/api/v1/uploadtoserver?XDEBUG_SESSION_START=14254',//仅为示例,非真实的接口地址
          filePath: tempFilePaths[0],
          name: 'sample',
          success: function (res) {
            var sPath = res.data;
            console.log(sPath);
            //  var sPath =res.data.replace(new RegExp("/", "g"),"");   
            wx.request({
              url: 'http://z.cn/api/v1/uploadtocos?XDEBUG_SESSION_START=14254',
              method: "POST",             
              data: {
                // bucket:"http://zerg2-1253758785.cossh.myqcloud.com/images/",
                bucket: "zerg2",
                // srcPath: "d:\huazi.jpg",
                srcPath: sPath,
                dstPath: "sample2",
                bizAttr: "",
                insertOnly: "0",
                slicesize: "3*1024*1024"
                // expired: "7200"
              },
              success: function (res) {

              }
            })
          }
        })
      }
    })
  },
})


写回答

1回答

7七月

2017-08-25

多出来的斜杠是转义的意思。建议你看一下 转义字符这个概念。

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4857 学习 · 4388 问题

查看课程