我在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)
从 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)
来源:这次提交
比 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 函数更好的解决方案。