2015-11-18 129 views
0

的真實路徑我有這樣的劇本在我看來laravel獲取輸入文件

<form method="post" enctype="multipart/form-data" action="{{ URL::route('import.produk.post') }}"> 
    <input type="file" name="import"> 
    <button class="btn btn-primary form-button" type="submit">Save</button> 
</form> 
在我的控制器

我想顯示文件的路徑
可以說位於D:\Data\product.xlsx
該文件使用這個腳本我做到這一點

public function postImportProduk() { 
    $input = Input::file('import')->getRealPath();; 
    var_dump($input); 
} 

,但它不顯示輸入文件的真實路徑,而不是臨時文件這樣的輸出

string(24) "C:\xampp\tmp\phpD745.tmp" 

我嘗試用->getFilename()它的節目臨時文件名太phpD745.tmp

,但如果我使用->getClientOriginalName()它的準確顯示product.xlsx

我不知道如何獲取文件真實路徑
PS:我使用laravel 4.2

+0

因爲那兒文件在上傳。你需要移動()它之前,你可以在你的存儲 –

+0

@DamienPirsy不太明白...所以我需要先移動它然後運行腳本'getRealPath'吧? – Neversaysblack

回答

1

完成上載後,文件存儲在一個臨時目錄中,並帶有一個隨機生成的名稱。

既然您在服務器中有文件,您想將其移動到您必須指定的某個特定文件夾中。你的情況就是這樣的例子是這樣的:

public function postImportProduk() { 
    $input = Input::file('import'); 
    $destinationPath = '/uploads/'; // path to save to, has to exist and be writeable 
    $filename = $input->getClientOriginalName(); // original name that it was uploaded with 
    $input->move($destinationPath,$fileName); // moving the file to specified dir with the original name 
} 

更多的功能here

+0

所以它不可能知道文件的原始路徑...我想保存原始路徑和目標路徑到數據庫.... – Neversaysblack

+0

你是什麼意思「原始路徑」?如果你想知道用戶在他的計算機上存儲文件的位置,那麼不需要,這是不可能的,如果是的話,這將是一個安全問題。 – Andrius

+0

嗯我現在明白了.. – Neversaysblack