如何获取Laravel 4中通过POST发送的文件内容?

Ros*_*sso 18 php laravel-4

我在Laravel 4中有一个通过POST方法发送文本文件的表单.然而,在Controller中,我无法弄清楚如何获取其内容以便将其放入DB中的BLOB字段.

Laravel的文档和我在网上找到的所有帖子总是展示如何使用该->move()方法将内容保存到文件中.

这是我在Controller中的代码:

$book = Books::find($id);
$file = Input::file('summary'); // get the file user sent via POST
$book->SummaryText = $file->getContent(); <---- this is the method I am searching for...
$book->save(); // save the summary text into the DB
Run Code Online (Sandbox Code Playgroud)

(SummaryText是我的数据库表上的MEDIUMTEXT).

那么,如何在Laravel 4.1中获取文件内容,而不必将其保存到文件中?那可能吗?

eli*_*f21 25

如果您要发布文本文件,那么它应该已经在服务器上.根据laravel文档,Input::file返回一个扩展php类的对象,SplFileInfo所以这应该工作:

$book->SummaryText = file_get_contents($file->getRealPath());
Run Code Online (Sandbox Code Playgroud)

我不确定php方法file_get_contents是否可以在Laravel框架中运行...如果不尝试这个:

$book->SummaryText = File::get($file->getRealPath());
Run Code Online (Sandbox Code Playgroud)


Rol*_*rke 7

从 Laravel v5.6.30 开始,您可以获取上传文件的文件内容,例如:

use Illuminate\Http\Request;

Route::post('/upload', function (Request $request) {
    $content = $request->file('photo')->get();
});
Run Code Online (Sandbox Code Playgroud)

来源:这次提交


Krz*_*zyk 6

比 file_get_contents 更好的解决方案是使用 SPL 类方法,因为 FileUpload 已经扩展了它们。

$file = Input::file('summary')->openFile();
$book->SummaryText = $file->fread($file->getSize());
Run Code Online (Sandbox Code Playgroud)

要了解有关 SplFileInfo 和 SplFileObject 的更多信息,请参阅:

因为这些可能非常有用,并且使用 OOP 的 SPL 是比结构 PHP 函数更好的解决方案。