php接受前端二进制的问题?

我把前端录制的视频的二进制流传给了后台

// 上传录制视频方法,获取视频地址
const updata = () => {
    const blob = new Blob(videoCecorded.value, { type: "video/mp4" });
    let file = new File(videoCecorded.value, "video-" + new Date().toISOString().replace(/:|\./g, "-") + ".mp4", {
        type: "video/mp4",
    });
    console.log(file)
    let data = new FormData();
    data.append("file", file);
    data.append('robot_id',props.robotId)
    data.append('type',0)
    data.append('string',dayjs(new Date()).format("YYYY-MM-DD-HH-mm-ss"))
    addVideoFun(data).then(res=>{
        console.log(res)
    })

    //传后台
};

image.png
我后台用的thinkphp框架,是这样接的:

$dataOrg=file_get_contents("php://input");

但是我打印$dataOrg是空,是不能直接打印还是我取的方法不对,我在thinkphp里操作$dataOrg提示为空。。。。

这是前端显示的我这个file文件,我传到后台马上把值返回来,确没有了file这个参数:
image.png
image.png

阅读 2.1k
2 个回答

你已经转为 formData 了,这就和普通的上传文件的表单一样,你直接 thinkphp 那边用正常的方法获取就行。

这是个multipart请求, 用file_get_contents("php://input");取不到数据的. 看$_FILES变量和$_POST变量.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进