Я только начинаю с Laravel и пытаюсь заставить загрузку файлов работать с использованием Dropzone JS . Я могу успешно загружать файлы, но они попадают в app/Http/Controllers
, где они недоступны для публичного доступа.
Похоже, что этот каталог рассматривается как корневой, поэтому, если я укажу / uploads в качестве папки, они перейдут в app/Http/Controllers/uploads
(что, очевидно, тоже не годится). Использование ..
s, похоже, не имеет никакого эффекта.
Это мой метод загрузки файлов:
$ds = DIRECTORY_SEPARATOR;
$storeFolder = '';
if ( ! empty($_FILES)) {
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
$targetFile = $targetPath. $_FILES['file']['name'];
move_uploaded_file($tempFile,$targetFile);
}
Я также попробовал ряд других методов, которые я нашел (ниже), но я получаю 500 ошибок в инспекторе элементов Chrome с этими.
Из официальных документов
$path = $request->file('file')->store('uploads');
Из учебника, который я нашел
$file = $request->file('file');
$destinationPath = '/';
$file->move($destinationPath,$file->getClientOriginalName());
Из другого урока
$uploadedFile = $request->file('file');
$filename = time().$uploadedFile->getClientOriginalName();
Storage::disk('local')->putFileAs(
'/'.$filename,
$uploadedFile,
$filename
);
Текущий метод выглядит нормально, но ему просто нужно хранить файлы в public / uploads.