You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTML5 File API:通过PHP将Blob切片保存为文件

嘿,你的前端代码已经把切片后的Blob正确封装到FormData里了,PHP这边处理起来其实很简单,我给你写个完整的示例,再把关键点解释清楚:

PHP 处理切片Blob保存的代码
<?php
// 先检查是否有合法的文件上传
if (isset($_FILES['fileUpload']) && $_FILES['fileUpload']['error'] === UPLOAD_ERR_OK) {
    // 提取上传文件的核心信息
    $uploadedFile = $_FILES['fileUpload'];
    $originalFileName = $uploadedFile['name'];
    $tempFilePath = $uploadedFile['tmp_name'];

    // 定义保存切片的目录,记得提前确保这个目录存在且有写权限
    $saveDir = './file_chunks/';
    // 如果目录不存在,自动创建(递归创建多级目录)
    if (!is_dir($saveDir)) {
        mkdir($saveDir, 0755, true);
    }

    // 生成切片文件的保存路径,如果你需要区分不同分片,可以给文件名加后缀(比如_0, _1)
    // 这里先直接用原文件名,你可以根据前端传递的分片索引修改
    $savePath = $saveDir . $originalFileName;

    // 将临时文件移动到目标目录
    if (move_uploaded_file($tempFilePath, $savePath)) {
        echo "切片文件保存成功,路径:{$savePath}";
    } else {
        echo "保存失败,请检查目录的写入权限";
    }
} else {
    // 处理上传错误的情况
    $errorCode = $_FILES['fileUpload']['error'] ?? '未知错误';
    echo "上传失败,错误码:{$errorCode}";
}
?>
关键注意事项
  • 权限问题:file_chunks目录必须有PHP进程的写入权限(一般设置0755权限即可),否则无法保存文件。
  • 上传配置:如果你的切片文件比较大,需要调整PHP配置文件中的upload_max_filesize和post_max_size参数,确保它们的值大于你的切片大小;如果上传耗时较长,还要调整max_execution_time避免超时。
  • 分片合并(可选):如果你的最终目标是合并所有分片成完整文件,需要前端在上传时额外传递分片索引、总片数等信息,PHP先把每个分片保存成带索引的文件(比如video.mp4_0),等所有分片上传完成后,再通过file_put_contents循环读取每个分片并写入到完整文件中。

内容的提问来源于stack exchange,提问作者Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:02