2016-07-21 3 views
0

У меня есть форма с файлом uplaod. Все работы находят. Но я не хочу переместить файл непосредственно в папку. После представить показываю страницу подтверждения, и там я показываю файл загружен сПолучить файл из temp после подтверждения с помощью PHP/Laravel

header('Content-Type: image/x-png'); 
$file = file_get_contents(\Illuminate\Support\Facades\Input::file('restImg')); 
$imgType = \Illuminate\Support\Facades\Input::file('restImg')->guessClientExtension(); 
echo sprintf('<img src="data:image/png;base64,%s" style="max-height: 200px"/>', base64_encode($file)); 

Это прекрасно работает. После подтверждения мне нравится перемещать файл в папку. Как я могу переместить файл после подтверждения? Input :: get ('файл') больше не доступен.

ответ

0

Вам необходимо будет сохранить файл в начальной загрузке где-то временно, кроме каталога по умолчанию tmp.

Документация PHP file uploads говорит:

Файл будет удален из временного каталога в конце запроса, если он не был перемещен в сторону или переименован

Это означает, что перемещение на следующий запрос файл больше не будет доступен.

Вместо этого переместите его в свой собственный каталог темпа или переименуйте его в нечто особенное, затем сохраните имя файла в $_SESSION, чтобы продолжить его до следующего запроса.

Для Laravel, это должно означать, поставив его в каталог /storage с чем-то вроде этого:

// Get the uploaded file 
$file = app('request')->file('myfile'); 

// Build the new destination 
$destination = storage_path() . DIRECTORY_SEPARATOR . 'myfolder'; 

// Make a semi-random file name to try to avoid conflicts (you can tweak this) 
$extension = $file->getClientOriginalExtension(); 
$newFilename = md5($file->getClientOriginalName() . microtime()).'.'.$extension; 

// Move the tmp file to new destination 
app('request')->file('myfile')->move($destination, $newFilename); 

// Remember the last uploaded file path at new destination 
app('session')->put('uploaded_file', $destination.DIRECTORY_SEPARATOR.$newFilename); 

Только не забудьте unlink() файл после второго запроса или сделать что-то еще с ним, или что папка заполнения быстро.

Дополнительные ссылки: http://api.symfony.com/2.7/Symfony/Component/HttpFoundation/File/UploadedFile.html

Смежные вопросы