Я пытаюсь преобразовать этот запрос curl в PHP:
curl -X POST \
--form fileItems[0].fileToUpload=@"/path/to/file1.txt" \
--form fileItems[0].path="/path1/path2/" \
--form fileItems[0].replacing=true \
--form fileItems[1].fileToUpload=@"/path/to/file2.txt" \
--form fileItems[1].path="/path1/path3/" \
--form fileItems[1].replacing=true \
http://example.com/files
Вот мой код:
$ch=curl_init("http://example.com/files");
$cfile= new CURLFile($_FILES['uploaded_files']['tmp_name'],
$_FILES['uploaded_files']['type'],
$_FILES['uploaded_files']['name']);
$data=array("fileItems" => array("fileToUpload" => $cfile,
"path" => "/",
"replacing" => true
));
После загрузки файла и попытки отправить его на серверЯ получаю это сообщение:
Notice: Array to string conversion in C:\...\uploadToBacktory.php on line 48
строка 48:
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
Ошибка сервера API:
{"timestamp":1526026978184,"status":400,"error":"Bad Request","exception":"org.springframework.validation.BindException","errors":[{"codes":["typeMismatch.fileUploadRequest.fileItems","typeMismatch.fileItems","typeMismatch.java.util.List","typeMismatch"],"arguments":[{"codes":["fileUploadRequest.fileItems","fileItems"],"arguments":null,"defaultMessage":"fileItems","code":"fileItems"}],"defaultMessage":"Failed to convert property value of type 'java.lang.String' to required type 'java.util.List' for property 'fileItems'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'ir.pegahtech.backtory.cdn_api.models.controllers.files.FileUploadItem' for property 'fileItems[0]': no matching editors or conversion strategy found","objectName":"fileUploadRequest","field":"fileItems","rejectedValue":"Array","bindingFailure":true,"code":"typeMismatch"}],"message":"Validation failed for object='fileUploadRequest'. Error count: 1","path":"/files"}