最近在嘗試用lavarel做上傳文件,但遇到了奇怪的問題,下面是代碼:
if(Input::hasFile("audio"))
{
$file = Input::file("audio");
$fileName = $this->guid();//
$extensionName = $file->guessExtension();
$fullFileName = $fileName . "." . $file->guessExtension();
Log::info("full file name: " . $fullFileName);
$path = $this->GetFileFolder();
$audioSuccess = Input::file("audio")->move($path, $fullFileName);
$audioFile = new FileInfo();
$audioFile->Id = $this->guid();
$audioFile->FileName = $fileName;
$audioFile->FilePath = $path;
$audioFile->ExtensionName = $file->guessExtension();
$audioFile->save();
}
提交後laravel提示臨時文件找不到,不明所以,明明文件已經傳上來了,居然還提示找不到臨時文件,如果是複製到的目標文件夾找不到我能理解,畢竟涉及到什麼絕對路徑相對路徑的問題,但找不到臨時文件我不能理解,也不能接受!!!!
自己研究了半天,不明所以,百度了一下,沒有結果,google了一下,再次證明google還被牆着。咋搞,只好曲線救國,bing英文版,畢竟是本土的還是能搜到點東西。
問題出現在
$audioFile->ExtensionName = $file->guessExtension();
這一句,因爲前面已經通過Input::file("audio")->move()
已經把文件移走了,所以再通過$file獲取任何文件相關的信息,都無法再找到文件,所以提示找不到臨時文件。解決辦法也必將簡單,先找個臨時變量把想要使用的文件屬性存起來,後面在用就好了。