A 'contents' key is required laravel $request->attach
Передаю такие данные
^ array:7 [
"object_type" => "product"
"object_ids" => array:2 [
0 => "1050"
1 => "1051"
]
"image_link_type" => "A"
"position" => 1
"image_path" => Illuminate\Http\UploadedFile {#345
-test: false
-originalName: "Снимок экрана от 2024-04-18 16-33-17.png"
-mimeType: "image/png"
-error: 0
#hashName: null
path: "/tmp"
filename: "phpioPbMN"
basename: "phpioPbMN"
pathname: "/tmp/phpioPbMN"
extension: ""
realPath: "/tmp/phpioPbMN"
aTime: 2024-04-25 11:16:10
mTime: 2024-04-25 11:16:10
cTime: 2024-04-25 11:16:10
inode: 8530985
size: 45458
perms: 0100600
owner: 1001
group: 1001
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
}
"type" => "default"
"detailed" => "detailed"
]
отправляю запрос таким образом
$response = $this->post($payload, 'full_url/upload-and-attach',
function (PendingRequest $request) use ($image, $imageName) {
$request->attach('image_path', $image, $imageName);
});
выходит ошибка
A 'contents' key is required {"file":"/var/www/dictionary-service/vendor/guzzlehttp/psr7/src/MultipartStream.php:90"}
Посмотрел это поле в MultipartStream там не может обрабатывать мой object_ids так как там массив
а тот эндпоинт который я обращаюсь принимает только массив иначе ошибка валидаций
$request->attach почему то проходит по всем полям массива а не только по image_path который я ему указал
Если убрать object_ids с массива то запрос доходит и придет ответ 422 ошибка валидаций
Ответы (1 шт):
Автор решения: noobaster
→ Ссылка
Попробуйте вторым параметром передать file_get_contents('путь_до_файла')
,
$request->attach('image_path', file_get_contents('путь_до_файла'), $imageName);
Я для отправки файлов использую фасад Illuminate\Support\Facades\Http
:
Http::attach('document', file_get_contents('путь до файла'),'имя_файла')
->post('url');