[英]Unable to upload a pdf file to AWS s3 bucket - PHP
我正在尝试将文件从文件上传网页上传到 AWS S3 存储桶。 我能够连接到我的 s3 存储桶,我可以通过裸 PHP 调用创建文件夹,但我似乎无法上传文件。 我得到的错误是:
1) 'Undefined index: file1 in '
2) 'Error:Found 2 errors while validating the input provided for the PutObject operation:[Key] is missing and is a required parameter [Key] expected string length to be >= 1, but found string length of 0'
HTML文件上传代码:
<form id="uploadDoc" enctype="multipart/form-data" method="post">
<input type="file" name="fileSelect" id="fileSelect">
<input type="button" value="uploadValue" onclick="upld.uploadFile()">
<progress id="progressBar" value="0" max="100" style="width: 300px;"></progress>
<div id="uploadStatus">status</div>
<div id="loaded_n_total">error msessage</div>
</form>
我的PHP代码:
$bucketName = 'testlabbookbucket1';
try{
$tempPath = $_FILES["file1"]['tmp_name'];
$folder = 'lseMember';
$fileName = $_FILES["file1"]['name'];
$result = $client -> putObject(array(
'Bucket' => $bucketName,
'Key' => $fileName,
'SourceFile' => $tempPath
));
}catch (S3Exception $e) {
die('Error:' . $e->getMessage());
} catch (Exception $e) {
die('Error:' . $e->getMessage());
}
JS:
// Onclick upload file
upld.uploadFile = function(){
// Get selected file
var file = upld.el('fileSelect').files[0];
console.log(file.name);
console.log(file.size);
console.log(file.type);
var formdata = new FormData();
formdata.append('file1', file);
var xmh = new XMLHttpRequest;
xmh.onreadystatechange = function(){
if(xmh.readyState == 4 && xmh.status == 200){
var response = xmh.responseText;
console.log('response: '+response);
}
}
// Event listeners
xmh.upload.addEventListener('progress', upld.progressHandler, false);
xmh.addEventListener('load', upld.completeHandler, false);
xmh.addEventListener('error', upld.errorHandler, false);
xmh.addEventListener('abort', upld.abortHandler, false);
xmh.open('POST', 's3Test.php');
xmh.send();
}
以下是我对此 AWS s3 的存储桶策略:
{
"Version": "2012-10-17",
"Id": "Policy1520243101111",
"Statement": [
{
"Sid": "Stmt1520243091111",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": [
"s3:Put*",
"s3:Get*"
],
"Resource": "arn:aws:s3:::testlabbookbucket1"
}
]
}
您正在初始化要在XMLHttpRequest
作为formdata
发送的数据,但实际上并没有发送它。 将uploadFile
函数中的最后一行更改为:
xmh.send(formdata);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.