我的Laravel项目在进行一些计算后会保存文件(txt或csv)。
我正在寻找保存这些文件的最佳做法。 也许/ resources / csv /...?
第二个问题如何从类中引用此路径的最佳方法? 在.env文件中设置abs路径? 是否有一个将返回资源路径的laravel方法?
答案 0 :(得分:22)
/ resources 不是最佳位置,因为此文件夹用于源文件,通常存储在源代码存储库(例如git)中。
应用程序生成的文件通常最终位于/ storage文件夹中的某个位置 - 只需在那里创建一个 / storage / csv 文件夹。
您永远不应该直接从您的类中引用这些文件。 Laravel的文件系统是您所需要的 - 您可以在这里阅读更多相关信息:http://laravel.com/docs/master/filesystem。他们对文件进行操作(如读取,写入,前置,追加,删除,移动,获取所有文件等等)更简单。
首先在 config / filesystems.php
中定义文件系统'disks' => [
'csv' => [
'driver' => 'local',
'root' => storage_path().'/csv',
],
],
现在,您可以从代码中的任何位置通过存储外观读取/写入csv文件,如下所示:
Storage::disk('csv')->put('file.csv', $content);
$content = Storage::disk('csv')->get('file.csv');
答案 1 :(得分:4)
您可以将文件保存在存储文件夹中。
例如:
您可以在存储文件夹中创建名为csv的文件夹,并按如下方式获取路径:
storage_path().'/csv';
您可以在
中找到存储文件夹 Laravel 4.2:app>存储
Laravel 5+:在根目录
答案 2 :(得分:0)
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();
}