Amazon S3 PHP SDK иногда не удается загрузить - PullRequest
0 голосов
/ 27 апреля 2020

У меня проблема с загрузкой файлов с S3. Проблема в том, что для некоторых файлов я не могу открыть их после успешной загрузки. Допустим, есть два файла file_one.pdf и файл two.pdf (с пробелом между файлом и двумя). file_one.pdf можно загрузить и открыть успешно, но файл two.pdf можно загрузить только при неудачном открытии, сказав, что «Adobe Acrobat Reader не может открыть файл file.pdf», поскольку он либо не поддерживается типом файла, либо потому, что файл имеет был поврежден ... "Я открываю их в Adobe, а не в chrome или других приложениях.

Я сравнил эти два файла друг с другом на S3, чтобы выяснить, есть ли различия между ними. Но они точно такие же. У них одинаковые разрешения, одинаковые метатеги, один и тот же тип файла и т. Д. c ... Разница лишь в их размере, и это хорошо, поскольку они имеют разное содержимое.

Это как я их скачиваю:

require_once AWS_PATH.'aws-autoloader.php';
use Aws\S3\S3Client;
use Aws\
$file_path = "evidence/". $project_folder ."/".$current_filename;
$filename = str_replace(" ", "_", $db_result['filename']);
$download_name = urlencode($filename);
try {
$s3->headObject(['Bucket' => S3_BUCKET, 'Key' => $file_path])
$p = 'https://s3.eu-west-2.amazonaws.com/'.S3_BUCKET.'/'.$file_path;
$buffer = file_get_contents($p);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($download_name) . '"');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Pragma: public');
header("Content-Length: " . strlen($buffer));
echo $buffer;
exit;
} catch (S3Exception $e) {
print_r($e);
}

Любая помощь по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...