Я пишу API, используя Laravel 6, и у меня возникают некоторые проблемы с загрузкой файлов, фактически, с загрузкой любых файлов вообще.
Я использую Postman для тестирования API. В разделе params я ввожу имя, а затем в разделе body (form-data) я ввожу ключ filename
и затем прикрепляю файл.
Когда я отправляю запрос, он возвращается со статусом all good
, но не загружает файл и не сохраняет данные в базе данных.
Кроме того, если я не прикрепляю файл изображения, средство проверки возвращается с требуемым состоянием , но если я изменю это на текстовый файл, он ничего не скажет и вернется со статусом all good
, поэтому он, похоже, пропускает часть filename.*
и выполняет только первую проверку filename
.
namespace App\Http\Controllers;
use App\ImageUpload;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Validator;
class ImageUploadController extends Controller
{
public function store(Request $request): JsonResponse
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'filename' => 'required',
'filename.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
if ($validator->fails()) {
return response()->json(['error validation failed'], 400);
}
if ($request->hasFile('filename')) {
foreach ($request->file('filename') as $image) {
$fileName = time().'.'.$image->getClientOriginalExtension();
$image->move(public_path() . '/uploads', $fileName);
$imageUpload = new ImageUpload();
$imageUpload->name = $request->name;
$imageUpload->filename = $fileName
$imageUpload->save();
}
}
return response()->json(['All good'], 200);
}
}
если я dd($resposne)
в самом верху, там находится файл, который я пытаюсь загрузить, см. Ниже;
+files: Symfony\Component\HttpFoundation\FileBag {#59
#parameters: array:1 [
"filename" => Symfony\Component\HttpFoundation\File\UploadedFile {#44
-test: false
-originalName: "23367298-7883819-image-m-101_1578974555854.jpg"
-mimeType: "image/jpeg"
-error: 0
path: "/tmp"
filename: "phpAJtgNw"
basename: "phpAJtgNw"
pathname: "/tmp/phpAJtgNw"
extension: ""
realPath: "/tmp/phpAJtgNw"
aTime: 2020-01-27 08:59:12
mTime: 2020-01-27 08:59:12
cTime: 2020-01-27 08:59:12
inode: 266560
size: 96981
perms: 0100600
owner: 1000
group: 1000
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
]
}