【发布时间】:2014-11-11 06:27:31
【问题描述】:
我是 php 初学者,需要帮助。
我正在处理一个简单的相册并尝试将照片上传到我从选项中选择的相册文件夹,但收到错误消息“没有这样的文件或目录”和“无法移动”。
我尝试将路径中的“$album_name”部分更改为“$row['name']”或“$album_id”,但它们都不起作用。但是,设置一个固定的 url 是可行的(例如 'uploads/bla/'.$random_name.'.jpg')。
如何在路径中包含我从选项中选择的专辑名称?当前上传的文件存储在文件夹之外(在“uploads”文件夹中)。
<form enctype='multipart/form-data' method='post'>
Select album: <br/>
<select name='album'>
<?php
$query = mysqli_query($dbc, "SELECT id, name FROM albums ORDER BY id DESC");
while($row = mysqli_fetch_array($query)) {
$album_id = $row['id'];
$album_name = $row['name'];
echo "<option value=".$album_id.">".$album_name."</option>";
}
?>
</select><br/><br/>
<?php
if(isset($_POST['upload'])) {
$album_id = $_POST['album'];
$file = $_FILES['file']['name'];
$file_tmp = $_FILES['file']['tmp_name'];
$random_name = rand();
if(empty($file)) {
echo "Please choose a file to upload.<br/> <br/>";
} else {
move_uploaded_file($file_tmp, 'uploads/'.**$album_name**.'/'.$random_name.'.jpg');
mysqli_query ($dbc, "INSERT INTO pictures VALUES('', '$album_id', '$random_name.jpg')");
echo "Photo uploaded!!!<br/> <br/> ";
}
}
?>
Select photo: <br/>
<input type='file' name='file' /><br/><br/>
<input type='submit' name='upload' value='Upload' />
</form>
【问题讨论】:
-
m_u_f() 不会为您创建子目录。如果
uploads/$album_name尚不存在,则移动将失败。并注意$rand.jpgNOT 是一个好用的文件名。 rand() 可以/将生成相同的数字。您应该使用您的数据库记录的主键(例如 auto_increment int),该主键将是唯一且不可重复的。 -
感谢您的提示。我将尝试创建子目录并使用主键而不是 rand()。
标签: php