私は学校のプロジェクトを行っていて、うまくいっていたと思っていました。ユーザーがイメージファイルを永久ファイルシステムでアップロードできないことがわかりました。私のアプリ全体は、ユーザーがイメージをアップロードすることをほぼ中心にしています。PHPでS3にファイルをアップロードする
私はAWS S3ストレージを使用するためにどこかを読んでいます。だから私はhttps://devcenter.heroku.com/articles/s3の指示に従っていた。
私は、構成プロセスのほとんどを経てきたが、最後でそれは言う:それはない
:
という名前のファイルにindex.php
<?php
require('vendor/autoload.php');
// this will simply read AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from env vars
$s3 = Aws\S3\S3Client::factory();
$bucket = getenv('S3_BUCKET')?: die('No "S3_BUCKET" config var in found in env!');
?>
<html>
<head><meta charset="UTF-8"></head>
<body>
<h1>S3 upload example</h1>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['userfile']) && $_FILES['userfile']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
// FIXME: add more validation, e.g. using ext/fileinfo
try {
// FIXME: do not use 'name' for upload (that's the original filename from the user's computer)
$upload = $s3->upload($bucket, $_FILES['userfile']['name'], fopen($_FILES['userfile']['tmp_name'], 'rb'), 'public-read');
?>
<p>Upload <a href="<?=htmlspecialchars($upload->get('ObjectURL'))?>">successful</a> :)</p>
<?php } catch(Exception $e) { ?>
<p>Upload error :(</p>
<?php } } ?>
<h2>Upload a file</h2>
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<input name="userfile" type="file"><input type="submit" value="Upload">
</form>
</body>
</html>
2つの質問が次を入れてどこに置くかindex.php
。私はそれがプロジェクトのルートディレクトリにあると仮定します。
私の他の質問はコード自体にあります。 15行目ではdo not use 'name' for upload (that's the original filename from the user's computer)
とはどういう意味なのか分かりません。ユーザーのアップロードファイル名はどのように分かりますか?
これを既存のアプリケーションの 'index.php'に入れないでください。これはスタンドアロンのサンプル/デモアプリケーションです。 –