上传,创建新目录,获取本地url,设置字段-PHP+;MySQL

上传,创建新目录,获取本地url,设置字段-PHP+;MySQL,php,mysql,Php,Mysql,我在互联网上搜索了这件事。但是,我不能得到答案。我还是一个初学者,我还在学习php+Mysql 我创建了一个由图片、人名组成的表单。单击“提交”按钮后,php和mysql脚本将在本地文件夹(public_html/images/$name/)中创建一个新目录。图像文件夹中新创建的文件夹应命名为人名(无空格)。然后,将获取文件夹地址并将其放入phpMyAdmin表中的一列中。例如,一个叫比尔的家伙在表格中填写了他的数据。他上传了自己的照片(rockstar.jpg),并将自己的名字“BillFis

我在互联网上搜索了这件事。但是,我不能得到答案。我还是一个初学者,我还在学习php+Mysql

我创建了一个由图片、人名组成的表单。单击“提交”按钮后,php和mysql脚本将在本地文件夹(public_html/images/$name/)中创建一个新目录。图像文件夹中新创建的文件夹应命名为人名(无空格)。然后,将获取文件夹地址并将其放入phpMyAdmin表中的一列中。例如,一个叫比尔的家伙在表格中填写了他的数据。他上传了自己的照片(rockstar.jpg),并将自己的名字“BillFish”放在表单名字段中。然后,在他提交之后,脚本将创建一个新文件夹(/images/Bill_Fish/),并将他的照片(rockstar.jpg)放在其中。之后,文件夹地址(/images/Bill_Fish/rockstar.jpg)将被放入phpMyAdmin表中一列的文本字段中

form_post.php代码

            $name= $_POST["name"];


            $file= "images/$name/";

            **I'm stuck here**
php代码

            <tr>
              <td colspan="2"><input name="pic" type="file" id="pic" /></td>
            </tr>
            <tr>
              <td width="132"><span class="order">Name: </span></td>
              <td><span class="order">
                <input type="text" name="name" id="name" />
              </span></td>
            </tr>

姓名:
有人能帮我写这个剧本吗?很抱歉要脚本,但我已经在网上搜索过了,我找不到答案

多谢各位。非常感谢你的帮助:D

$name= $_POST["name"];
$name = str_replace(' ', '_', $name); // replace space with underscore

$file= "images/".$name."/";
mkdir($file);

$filename = $_FILES['pic']['name']; // getting name of file being uploaded. Eg - rockstar
$ext = pathinfo($filename,PATHINFO_EXTENSION); // getting extension of file being uploaded
$destination = $file.$filename.'.'.$ext; // this will be images/Bill/rockstar.jpg

if(move_uploaded_file($_FILES['pic']['tmp_name'], $destination))
{
   echo 'File uploaded successfully';
}
else
{
   echo $_FILES['pic']['error'];
}
请注意,这将使您大致了解文件上载。当然,应该采取措施确保只上传图片、文件大小限制等


忘记了
mkdir
。首先,感谢Tiit的提示:表单应具有用于上传文件的正确的
enctype

<form enctype="multipart/form-data" action="form_post.php" method="POST">
<input name="name" type="text"><br />
<input name="pic" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
将临时文件移动到右侧文件夹:

$tmp_name = $_FILES['pic']['tmp_name'];
$name = $_FILES['pic']['name'];
move_uploaded_file($tmp_name, $dir."/".$name); 

你应该有一个你描述的解决方案

我想提出两个想法:

  • 仅将空格替换为下划线可能不够,前提是用户可以或多或少地输入任何名称。我建议改为使用propper编码,因为路径的行为接近url,所以我建议使用
    url\u encode()
    url\u decode()
    。只要想想输入“Jon O'Hara”或“Nguy§/./ßt*+”之类的名字
  • 通常,任务的解决方式不同:为用户创建一个数据库条目,并为该条目生成一个id。通常这是一个自动递增的数字索引,这样可以避免两个帐户共享相同名称(发生…)和“外来字符”的问题。您将该id作为要创建的目录的名称。这样以后很容易再次找到该文件夹。当您在数据库中识别正确的条目时,就可以构建文件夹路径,而无需存储它。这还有一个优点,就是要逐步生成的文件夹结构不是硬编码的。相反,你可能会得出结论,你想重新组织它。重建路径时,您只需更改reconstructin算法,而在存储最终路径时,您必须更改数据库中的所有路径
    您可以准备如何用PHP上传文件如何使用MySQL和str_replace清理目录名
    $tmp_name = $_FILES['pic']['tmp_name'];
    $name = $_FILES['pic']['name'];
    move_uploaded_file($tmp_name, $dir."/".$name);