Php 未指定源文件时,AWS S3多部分上载工作正常
我已经构建了一个ajax上传程序,可以直接将文件上传到S3,它工作得非常完美。我对它的实际工作方式感到困惑。我对文档中如何显示它采取了不同的方法,在元数据中指定文件名而不是指定源文件。未发送任何文件位置 我正在使用AWS SDK 2.4.3Php 未指定源文件时,AWS S3多部分上载工作正常,php,ajax,amazon-web-services,amazon-s3,Php,Ajax,Amazon Web Services,Amazon S3,我已经构建了一个ajax上传程序,可以直接将文件上传到S3,它工作得非常完美。我对它的实际工作方式感到困惑。我对文档中如何显示它采取了不同的方法,在元数据中指定文件名而不是指定源文件。未发送任何文件位置 我正在使用AWS SDK 2.4.3 $client = S3Client::factory(array( 'key' => AWS_KEY, 'secret' => AWS_SECRET )); $extension = pathinfo($this->re
$client = S3Client::factory(array(
'key' => AWS_KEY,
'secret' => AWS_SECRET
));
$extension = pathinfo($this->request->query['fileInfo']['name'], PATHINFO_EXTENSION);
$model = $client->createMultipartUpload(array(
'Bucket' => AWS_BUCKET_NAME,
'Key' => uniqid() . '.' . $extension, // Files don't share same name
'ContentType' => $this->request->query['fileInfo']['type'], // image/png
'Metadata' => $this->request->query['fileInfo']
));
$this->request->query['fileInfo']
array(
'name' => "image.png",
'type' => "image/png",
'size' => 196292,
'lastModifiedDate' => Wed Aug 20 2014 15:02:29 GMT+1200 (NZST)
);
信号上传部分
$command = $client->getCommand('UploadPart',
array(
'Bucket' => AWS_BUCKET_NAME,
'Key' => $this->request->query['sendBackData']['key'], // 53fd39a185f43.png
'UploadId' => $this->request->query['sendBackData']['uploadId'], // hSJuBm3dWCMM1b....
'PartNumber' => $this->request->query['partNumber'],
'ContentLength' => $this->request->query['contentLength']
));
$request = $command->prepare();
$client->dispatch('command.before_send', array('command' => $command));
$request->removeHeader('User-Agent');
$request->setHeader('x-amz-date', gmdate(DateFormat::RFC2822));
$client->dispatch('request.before_send', array('request' => $request));
任何地方都没有对临时文件路径的引用,我试着在SDK中挖掘,但似乎找不到任何显示找到该文件的方法的东西。另外,由于这是通过AJAX发送的,所以它不会创建临时文件
删除
元数据
内容类型
并在CreateMultipartUpload
中分配一个随机的键
,仍然会上载文件,只会以键中指定的名称结束。。。让另外两名开发人员查看它,但他们都不知道它是如何工作的。这就是您的全部代码吗?如前所述,它甚至无法完成多部分上传,因为需要额外的操作才能完成。不,这只是指定文件的上半部分。将进行编辑以添加上传部件的发送方式。不要认为需要使用completeMultipartUpload
来显示没有指定文件路径。从您目前发布的内容来看,这不应该起作用。你有什么证据证明它是有效的?我有超过数百种媒体的公共URL,还有其他服务也可以从公共URL复制媒体并对媒体进行编码。