【发布时间】:2018-10-19 22:14:06
【问题描述】:
我上传了一个 *.mp4 视频,并使用 JavaScript 的 new Blob() 函数将其转换为 Blob type。
我使用 AJAX 将此 Blob 发送到 PHP。
现在我想在 PHP 中读取这个 Blob 的内容。换句话说,我需要这个 Blob 的二进制数据,并希望将其存储到 PHP 变量中。
然而,用 PHP 读取 Blob 文件似乎是不可能的,因为 fread、fopen 和 file_get_contents 都失败了!当我在浏览器中打开 Blob URL 时,视频播放正常。
我的问题是,如何在不安装扩展/库的情况下使用 PHP 获取此 Blob 的二进制数据?
var_dump($_FILES['video']);
Array
(
[name] => blob
[type] => video/mp4
[tmp_name] => C:\xampp\tmp\php43B8.tmp
[size] => 58
[error] => 0
)
// Try 1
if ($stream = fopen($_FILES['video']['tmp_name'], 'r')) {
echo stream_get_contents($stream, filesize($_FILES['video']['tmp_name']));
fclose($stream);
}
// Try 2
if ($fp = fopen($_FILES['video']['tmp_name'], 'r')) {
echo fread($fp, filesize($_FILES['video']['tmp_name']));
fclose($fp);
}
// Try 3
file_get_contents($_FILES['video']['tmp_name'])
结果总是:blob:http://localhost/d53e40bd-686b-46c8-9e81-94789351466f
【问题讨论】:
-
虽然通常与数据库查询相关,但您是否尝试过 fbsql_read_blob()? php.net/manual/en/function.fbsql-read-blob.php
-
感谢您的回复!我只是跳过了那个,因为它是扩展名。此外,我不需要与数据库进行通信,因为 Blob 的内容应该通过其 API 发送到例如 YouTube。