如何在 php 中从 BLOB 创建/保存文件?

Posted

技术标签:

【中文标题】如何在 php 中从 BLOB 创建/保存文件?【英文标题】:How can I create/save a file from BLOB in php? 【发布时间】:2018-03-20 16:40:42 【问题描述】:

到目前为止我做了什么:

好的,所以我创建了一个 blob 文件(wav 内容),它存储在 blob:http://localhost/cf6fefdc-352e-4cec-aef8-03af6d0d0ef6 下。

当我将此 URL 放入浏览器时,它会播放该文件。

我需要做什么 我想将 blob 转换为一个实际的文件,我想将它存储在我的网络服务器上。 我正在通过 AJAX 将 blob 对象交给一个 php 文件

$.ajax (
	type: "POST",
	url:"path/to/my/file.php",
	data: thefile : blob ,
	    success: function(text) 
	        console.log(text);
	    ,
	    error:function()
	        console.log("Error")
	    
);

这行得通。如果我 print_r 它返回的变量 [object Blob] 我的 PHP

<?php
  $file = $_POST['thefile']; 
  print_r($file);

谁能告诉我如何从那里转换文件并将其保存到我的服务器?

【问题讨论】:

How can javascript upload a blob?的可能重复 【参考方案1】:

在您的 file.php 中添加此代码

$filePath = 'uploads/' . $_POST['thefile'];


$tempName = $_FILES['thefile']['tmp_name'];


    if (!move_uploaded_file($tempName, $filePath)) 

    echo 'Problem saving file: '.$tempName;
    die();


// success report
echo 'success';

【讨论】:

你需要在你的根目录中有“uploads”文件夹 感谢您的回答。我创建了文件夹(以防万一,权限 777),但我收到一条错误消息“通知:未定义索引:/Applications/XAMPP/xamppfiles/htdocs/website/wp-content/ 中的文件在第 6 行的主题/主题/file.php 保存文件时出现问题:“在第 6 行它说:$tempName = $_FILES['thefile']['tmp_name' ]; file_put_contents($path, $data);从 ajax 获取该 blobdata 并使用此方法保存到您的目录中 好的,这就是我的 php 文件现在的样子:` $file = $_POST['thefile']; file_put_contents("test.wmv", $file);` 它的作用是创建一个 text.wmv 文件,但它只有 13 个字节,如果我在文本编辑器中打开它,内容是“[object Blob] ”。所以文件已创建,但仍然不是正确的方式......有什么想法吗?

以上是关于如何在 php 中从 BLOB 创建/保存文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Javascript/Node 中从 blob 写入 .wav 文件

将文件 base64 保存在 blob 列中

在 azure blob 子容器中从本地上传 zip

使用 JS 和 PHP 将 textarea 内容保存在文件中

在PHP中从base64字符串中检测图像类型

PHP / MySQL - 显示来自blob的图像[重复]