【发布时间】:2015-11-07 10:01:09
【问题描述】:
我的 Laravel 项目会在进行一些计算后保存文件(txt 或 csv)。
我正在寻找保存这些文件的最佳做法。 也许 /resources/csv/...?
第二个问题是从类中引用此路径的最佳方式是什么? 在 .env 文件中设置 abs 路径? 有没有返回资源路径的laravel方法?
【问题讨论】:
标签: php file laravel laravel-5
我的 Laravel 项目会在进行一些计算后保存文件(txt 或 csv)。
我正在寻找保存这些文件的最佳做法。 也许 /resources/csv/...?
第二个问题是从类中引用此路径的最佳方式是什么? 在 .env 文件中设置 abs 路径? 有没有返回资源路径的laravel方法?
【问题讨论】:
标签: php file laravel laravel-5
public function storePhotos($data, Request $request, $requirement)
{
//setlocale(LC_ALL, 'en_US.UTF-8'); //for spanish names
$fileUploaded = $request->file('someVarFormName');
$folder = 'docs/';
$destinationFolder = date("Y-m");
$destinationFolderInServer = $folder.$destinationFolder;//.'/';
//$rules = array('file' => 'required|mimes:png,gif,jpeg,txt,pdf,doc,docx,exel,exelx'); //'required|mimes:png,gif,jpeg,txt,pdf,doc'
$validator = Validator::make(array('file' => $fileUploaded), $rules);
if($validator->passes())
{
$originalFileName = $fileUploaded->getClientOriginalName();
$fileName = pathinfo($originalFileName, PATHINFO_FILENAME);
$fileExtension = strtolower(pathinfo($originalFileName, PATHINFO_EXTENSION));
$linkFilenameTemp = strtolower(ToolText::createLink($fileName));
$linkFilename = $linkFilenameTemp.'.'.$fileExtension;
//get versioin number if filename exist
$i = 1;
while(file_exists($destinationFolderInServer.'/'.$linkFilename))
{
$linkFilename = $linkFilenameTemp.'('.$i.').'.$fileExtension;
$i++;
}
//* quitar / si falla
$upload_success = $fileUploaded->move($destinationFolderInServer, $linkFilename);
$dbRegOfFile = NULL;
if($requirement->have_file)
$dbRegOfFile = new mdl_TramitesRequisitosFiles();
else
$dbRegOfFile = mdl_TramitesRequisitosFiles::where('requisito_id', $requirement->id)
->get();
$dbRegOfFile->requisito_id = $data['requirementId'];
$dbRegOfFile->publisher = $data['publisher'];
$dbRegOfFile->publisher_entity = $data['publisher_entity'];
$dbRegOfFile->nice_name = $fileName;
$dbRegOfFile->link_file_name = $linkFilename;
$dbRegOfFile->extension = $fileName;
$dbRegOfFile->size = $fileUploaded->getClientSize();
$dbRegOfFile->save();
}
【讨论】:
/resources 不是最好的位置,因为该文件夹用于存放源文件并且通常存储在源代码存储库(例如 git)中。
应用程序生成的文件通常在 /storage 文件夹中的某个位置结束 - 只需在那里创建一个 /storage/csv 文件夹。
您不应该直接从您的类中引用这些文件。 Laravel 的文件系统正是你所需要的——你可以在这里阅读更多关于它们的信息:http://laravel.com/docs/master/filesystem。它们使对文件的操作(如读取、写入、前置、追加、删除、移动、获取所有文件等等...)变得更加简单。
首先在你的 config/filesystems.php
中定义一个文件系统'disks' => [
'csv' => [
'driver' => 'local',
'root' => storage_path().'/csv',
],
],
现在您可以通过 Storage 外观从代码中的任何位置读取/写入 csv 文件,如下所示:
Storage::disk('csv')->put('file.csv', $content);
$content = Storage::disk('csv')->get('file.csv');
【讨论】:
您可以将文件保存在存储文件夹中。
例如:
可以在storage文件夹中创建一个名为csv的文件夹,获取路径如下:
storage_path().'/csv';
您可以在
Laravel 4.2:应用>存储
Laravel 5+:在根目录中
【讨论】: