Javascript PHP:将变量传递给AWS SDK2上载程序
我完全被一个简单的问题所困扰。以下Amazon AWS SDK2脚本将文件成功上载到AWS S3,其中$filepath变量是上载文件的绝对路径,并且在脚本中定义 然而,当我试图使用一个简单的表单来选择一个文件并将其作为变量传递给AWS脚本时,我就陷入了困境。例如,已尝试使用$_文件['input1']['name']、$_文件['input1']['tmp_名称']、realpath()、file_get_contents()访问完整路径。还尝试使用javascript,但浏览器会将路径更改为“fakepath”。我显然不了解元素中type=“file”的某些内容 因此,我的问题是:如何让用户从本地磁盘选择文件并(使用POST操作???)将文件路径作为变量传递给AWS SDK2上载脚本?我的简单测试表也包括在下面 简单形式:Javascript PHP:将变量传递给AWS SDK2上载程序,javascript,php,amazon-web-services,amazon-s3,Javascript,Php,Amazon Web Services,Amazon S3,我完全被一个简单的问题所困扰。以下Amazon AWS SDK2脚本将文件成功上载到AWS S3,其中$filepath变量是上载文件的绝对路径,并且在脚本中定义 然而,当我试图使用一个简单的表单来选择一个文件并将其作为变量传递给AWS脚本时,我就陷入了困境。例如,已尝试使用$_文件['input1']['name']、$_文件['input1']['tmp_名称']、realpath()、file_get_contents()访问完整路径。还尝试使用javascript,但浏览器会将路径更改为
<body>
<form id="form1" action="SDK2_script_process.php" method="post" enctype="multipart/form-data">
<input type="file" id="input1" name="input1" />
<input type="submit" name="submit" id="submit" value="Search" >
</form> </body>
进程脚本(SDK2_script_Process.php):
我想找到了。我应该使用PostObject,而不是putObject
参见Aws\S3\Model\PostObject;在公园里
<?php
//CONNECTS TO AWS V2 SDK AND UPLOADS FILE
//Literal path to aws.phar file
require_once 'AWSSDKforPHP/aws.phar';
use Aws\S3\S3Client;
use Guzzle\Http\EntityBody;
// Instantiate the S3 client with AWS credentials and optional desired AWS region
$client = S3Client::factory(array(
'key' => 'MYKEY',
'secret' => MYSECRETKEY'
));
//Name of bucket on S3
$bucket = 'mybucket';
//Filename to be saved in S3 Bucket
$filename = "/directoryA/directoryB/filename.extension";
//Literal filepath to file I want to save - THIS WORKS
// $filepath = '../../directory1/directory2/directory3/filename.extension';
// Filepath from simple form - DOES NOT WORK
$filepath = $_FILES['input1']['tmp_name'];
$result = $client->putObject(array(
'Bucket' => $bucket,
'Key' => $filename,
'SourceFile' => $filepath,
'Metadata' => array(
'title' => 'This is the title metadata',
'artist' => 'This is the artist metadata'
)
));
// HEAD object confirms success
$headers = $client->headObject(array(
"Bucket" => $bucket,
"Key" => $filename
));
//print_r($headers->toArray());
echo $result['ObjectURL'];
echo $headers['Metadata']['artist'];
?>