我正在使用CakePHP4.0。我尝试在cloudinary中上载图像(Laminas\Diactoros\UploadedFile)

我正在使用CakePHP4.0。我尝试在cloudinary中上载图像(Laminas\Diactoros\UploadedFile),php,object,cakephp,cloudinary,image-upload,Php,Object,Cakephp,Cloudinary,Image Upload,我的Post数据图像返回此格式。为什么要返回此类型。我想要一个数组,并上传一个图像在cloudinary如何使用它。你能帮我个忙吗 Laminas\Diactoros\UploadedFile Object ( [clientFilename:Laminas\Diactoros\UploadedFile:private] => IMG-20180705-WA0007.jpg [clientMediaType:Laminas\Diactoros\UploadedFile:private] =

我的Post数据图像返回此格式。为什么要返回此类型。我想要一个数组,并上传一个图像在cloudinary如何使用它。你能帮我个忙吗

Laminas\Diactoros\UploadedFile Object (
[clientFilename:Laminas\Diactoros\UploadedFile:private] => IMG-20180705-WA0007.jpg
[clientMediaType:Laminas\Diactoros\UploadedFile:private] => image/jpeg
[error:Laminas\Diactoros\UploadedFile:private] => 0
[file:Laminas\Diactoros\UploadedFile:private] => D:\xampp\tmp\phpB830.tmp
[moved:Laminas\Diactoros\UploadedFile:private] => 
[size:Laminas\Diactoros\UploadedFile:private] => 164593
[stream:Laminas\Diactoros\UploadedFile:private] => )
至于“为什么”,文件上传对象更通用,允许更容易的测试,并提供一个干净、标准化的界面

虽然您可以通过将
App.uploadedfilesaobjects
配置选项设置为
false
来切换回使用数组,但Cloudinary似乎并不需要使用文件上载数组,它们用于上载文件的PHP SDK方法接受一个简单的本地文件路径,即您应该能够执行以下操作:

$tmpPath=$uploadedFile->getStream()->getMetadata('uri');
$result=\Cloudinary\Uploader::upload($tmpPath,[/*…*/]);
$tmpPath
将与上载数组的
tmp
键提供的路径相同

对于原始API调用,您可能会使用二进制文件数据在POST请求中发送它,您也可以通过流轻松访问:

$filePostData = $uploadedFile->getStream()->getContents();
这与读取上传数组的
tmp
键指向的文件基本相同

另见

至于“为什么”,文件上传对象更通用,允许更容易的测试,并提供干净、标准化的界面

虽然您可以通过将
App.uploadedfilesaobjects
配置选项设置为
false
来切换回使用数组,但Cloudinary似乎并不需要使用文件上载数组,它们用于上载文件的PHP SDK方法接受一个简单的本地文件路径,即您应该能够执行以下操作:

$tmpPath=$uploadedFile->getStream()->getMetadata('uri');
$result=\Cloudinary\Uploader::upload($tmpPath,[/*…*/]);
$tmpPath
将与上载数组的
tmp
键提供的路径相同

对于原始API调用,您可能会使用二进制文件数据在POST请求中发送它,您也可以通过流轻松访问:

$filePostData = $uploadedFile->getStream()->getContents();
这与读取上传数组的
tmp
键指向的文件基本相同

另见