我有一個<form>
與多個文件輸入,將這些文件存儲到服務器。文件的名稱必須遵循數字標準,這就是爲什麼在存儲之前重命名它們的原因。每個帖子都有一個ID可以有多個文件,所以模式是:post-id + dash和一個數字+文件擴展名,這種方式,如果同一篇文章有兩個文件具有相同的擴展名,則短劃線+數字將避免他們被覆蓋。因此,在我存儲文件之前,我運行一個循環來找到名稱的正確編號。問題是,驗證文件存在的函數似乎並不是在它應該返回時才返回true。的代碼:PHP/Laravel文件存在驗證不起作用
$counter = 0;
do{
$nomeArquivo = $post->id . "-{$counter}" . "." . $arq->extension();
$counter++;
//these commented are other ways of verification I tried
//}while(Storage::exists($nomeArquivo));
//}while(file_exists("/storage/" . $nomeArquivo));
}while(is_file("/storage/" . $post->id . "-{$counter}"));
Storage::putFileAs('/public', $arq, $nomeArquivo);
此代碼上方的foreach($files as $arq)
其中$files
是從表單輸入文件內運行。
參考:https://laravel.com/docs/5.4/filesystem和https://laravel.com/api/5.4/Illuminate/Filesystem/Filesystem.html
有必要擁有您指定的文件名,否則您可以使用唯一的名稱來存檔 –
是的,我通過將其指定給變量$ nomeArquivo來完成。我嘗試過,沒有完整的路徑,但都沒有工作 – Fabiotk
你的代碼不太可能工作,因爲你正在'/ storage'中檢查文件的存在,但是你將文件寫入'/ public'。如果您不使用內置的「存儲」或「文件」外觀,請使用'public_path'或'storage_path'幫助程序檢查文件並將其保存在正確的位置。 – fubar