Продолжить выполнение после загрузки файла с Amazon S3 с использованием PHP

#php #amazon-s3

#php #amazon-s3

Вопрос:

Я загружаю PDF-файл с S3, используя приведенный ниже код:

     try {

        $object = $s3->getObject(array(
        'Bucket' => $bucket,
        'Key'    => $keyname   
        ));
        header('Content-Description: File Transfer');
        header("Content-Encoding: none");
        header('Content-Disposition: attachment; filename='.$keyname);
        header('Expires: 0');
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header('Pragma: public');
        header("Content-Type: {$object['ContentType']}");
        echo $object['Body'];
        //Code to be executed after downloading the file
        echo "test";
        $orig = "C:\orig\".$keyname;
        $dest = "C:\dest\".$keyname;
        rename($orig, $dest);
        
    } catch (Exception $e) {
        echo "Exception " . $e->getMessage();
    }
 

Проблема здесь в том, что я хочу переместить этот файл из папки загрузок по умолчанию в другую, но похоже, что скрипт не работает после установки заголовков, я перепробовал много решений, предложенных ранее в подобных проблемах, но все потерпели неудачу, когда я выполняю этот скрипт, файл загружается успешно, ноЯ не вижу «тест» в браузере, и файл не перемещается.

Спасибо за вашу помощь.

Комментарии:

1. Вы видите какой-либо вывод для echo $object['Body']; ?

2. В загруженном файле, да, но echo ‘test’ не отображается в браузере, на самом деле, в браузере ничего не отображается, но файл успешно загружен, и я могу просмотреть его из папки downloads. Спасибо.

Ответ №1:

Вы пробовали использовать php-функцию file_put_contents ? вы можете поместить содержимое, которое вы получаете напрямую, в файл