Intereting Posts
ImageMagick convert работает в командной строке, но не через PHP exec () Какие дополнительные ценные бумаги вы добавляете к установкам cms с открытым исходным кодом? Динамическое изменение позиции корзины не работает с заказами в WooCommerce 3.0+ Как я могу предотвратить добавление дополнительных строк после URL-адресов, которые заканчиваются на .php? Как проверить токен JSON с помощью открытого ключа RSA? Как использовать setInterval в PHP? Добавление дней к дате с помощью PHP Опубликовать значения и загрузить изображение на php-сервер в android Лучший способ использовать PHP для шифрования и дешифрования паролей? Удаление всех десятичных знаков в PHP Объект-объект не может быть найден в – MappingException Результаты Weird MYSQL с использованием PDO :: FETCH_ASSOC без псевдонима столбца Загрузка файла не проверяет существующий файл 500 – Произошла ошибка! Функция DB сообщает об ошибках при добавлении новой статьи в Joomla! Как разобрать JSON в триггере MYSQL

AWS S3 Многостраничная загрузка, когда не указывается исходный файл

Я создал загрузчик ajax, который загружает файлы непосредственно на S3, он работает безупречно, что я запутался в том, как он работает. Я применил другой подход к тому, как это показано в документации, вместо указания sourceFile имя файла указывается в метаданных. Не отправляется местоположение файла.

Я использую AWS SDK 2.4.3

 $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-> запрос [ 'FILEINFO']

 array( 'name' => "image.png", 'type' => "image/png", 'size' => 196292, 'lastModifiedDate' => Wed Aug 20 2014 15:02:29 GMT+1200 (NZST) ); 

SignUploadPart

 $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)); 

Theres не ссылается на путь к файлу temp в любом месте, я пробовал копать через SDK, но не могу найти ничего, что показывает способ поиска файла. Кроме того, поскольку это отправляется через AJAX, он не создает временный файл.

Удаление Metadata ContentType и назначение случайного Key в CreateMultipartUpload прежнему загружает файл, просто заканчивается именем, указанным в Key … Если бы два других разработчика смотрели на него, и оба не могли понять, как он работает.