使用$\u POST然后使用$\u文件在PHP中上载文件
我正在尝试编写一个上传表单,根据isset($\u POST[])中给出的名称在S3中创建一个新文件夹。我遇到的问题是,我似乎可以使用$\u POST或$\u文件,而不是两者,至少可以按顺序使用 我尝试嵌套if(isset()),但这似乎不会影响任何事情,从我所阅读的内容来看,像这样嵌套是不可取的 编辑:这个问题的一个简单解释是在isset($\u POST)没有做任何事情之后上传,因为它永远无法到达isset($\u文件)。也就是说,如果我只上传硬编码的路径,它将文件存储在s3中 下面是有关代码的摘要: 首先,在选择要查看的课程时,会发布一篇文章,这样我就可以获得存储该课程的新文件夹的名称(这样它们就不会全部转储到一个存储桶中) 我尝试使用unset($\u POST);在每个if语句的末尾仍然无效。有没有更好的方法来构造它,使if(isset())语句都能成功运行,还是我在开玩笑说这是可以做到的?对此,我们非常感谢您的任何启示 最好的 -布罗梅奥使用$\u POST然后使用$\u文件在PHP中上载文件,php,post,amazon-web-services,file-upload,amazon-s3,Php,Post,Amazon Web Services,File Upload,Amazon S3,我正在尝试编写一个上传表单,根据isset($\u POST[])中给出的名称在S3中创建一个新文件夹。我遇到的问题是,我似乎可以使用$\u POST或$\u文件,而不是两者,至少可以按顺序使用 我尝试嵌套if(isset()),但这似乎不会影响任何事情,从我所阅读的内容来看,像这样嵌套是不可取的 编辑:这个问题的一个简单解释是在isset($\u POST)没有做任何事情之后上传,因为它永远无法到达isset($\u文件)。也就是说,如果我只上传硬编码的路径,它将文件存储在s3中 下面是有关代
//view description and files for that lesson
if(isset($_POST['viewlesson']))
{
$select = "SELECT * FROM lessons WHERE idlessons='$_POST[hidden]'";
$selq = mysqli_query($con, $select);
?>
<table align="center" cellpadding="0" cellspace="0" border="0">
<tr>
<td><strong>ID</strong></td>
<td><strong>Name</strong></td>
<td><strong>Subject</strong></td>
<td><strong>Grade</strong></td>
<td><strong>Tag</strong></td>
</tr>
<?php
while($row = mysqli_fetch_array($selq, MYSQLI_ASSOC))
{
echo "<form action=index.php method=post>";
echo "<tr>";
echo '<td>'.'<input type=text name=id readonly value="'.$row['idlessons'].'"></td>';
echo '<td>'.'<input type=text name=name readonly value="'.$row['Name'].'"></td>';
echo '<td>'.'<input type=text name=grade readonly value="'.$row['Grade'].'"></td>';
echo '<td>'.'<input type=text name=subject readonly value="'.$row['Subject'].'"></td>';
echo '<td>'.'<input type=text name=tag readonly value="'.$row['Tag'].'"></td>';
echo "</tr>";
}
?>
</table>
<?php
//debug to display post before upload
$tokey = $_POST['name'];
echo $tokey;
//upload form
?>
<center>
<form enctype="multipart/form-data" action="viewdb.php" method="POST">
<input name="file" type="file">
<input type="submit" value="Upload">
</form>
</center>
<?php
}
//upload file to the bucket
if(isset($_FILES['file']))
{
$file = $_FILES['file'];
$name = $file['name'];
$tmp_name = $file['tmp_name'];
$extension = explode('.', $name);
//$extenstion = strtolower(end($extenstion));
$key = md5(uniqid());
$tmp_file_name = "{$key}.{extenstion}";
$tmp_file_path = "files/{$tmp_file_name}";
move_uploaded_file($tmp_name, $tmp_file_path);
try
{
$s3->putObject([
'Bucket' => $config['s3']['bucket'],
//'Key' => "uploads/{$name}",
'Key' => "{$tokey}/{$name}",
'Body' => fopen($tmp_file_path, 'rb'),
'ACL' => 'public-read'
]);
unlink($tmp_file_path);
}
catch (S3Exception $e)
{
die("There was an error uploading your file.");
}
}