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

时间:2012-11-14 10:31:08

标签: php mysql

我搜索了整个互联网。但是,我无法得到答案。我还是初学者,我还在学习php + Mysql。

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

form_post.php代码

            $name= $_POST["name"];


            $file= "images/$name/";

            **I'm stuck here**

form.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

3 个答案:

答案 0 :(得分:1)

我想提出两个想法:

  1. 只是替换空格我的下划线可能还不够,只要用户可以输入更多或更少的名称作为名称。请改用propper编码,我建议使用url_encode()url_decode(),因为路径的行为接近于网址。想想输入“Jon O'Hara”或“Nguy§/../äßt* +'s”之类的名字......
  2. 通常你的任务解决不同:你为用户创建一个数据库条目,为该条目生成一个id。通常,这是一个自动递增的数字索引,这样可以避免两个帐户共享相同名称(发生...)和“异国情调”的问题。您将 id作为要创建的目录的名称。这样,以后再次找到该文件夹​​很容易。当您在数据库中识别正确的条目时,您可以构建文件夹路径,而无需存储它。这也有一个优点,即您要逐步生成的文件夹结构不是硬编码的。相反,您可能会得出结论,您想重新组织它。通过重建路径,您只需更改reconstructin算法,而在存储最终路径时,您必须更改数据库中的所有路径。

答案 1 :(得分:0)

$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带来了

答案 2 :(得分:0)

首先:表单应该使用正确的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>

其次让我们来看看PHP方面。要获取文件数据,您必须查看$ _FILES数组。有关图像的所有信息都在$_FILES['pic']中。在该数组中有“name”(文件名)和“tmp_name”(上传文件的临时名称)等元素。

您想要做的是以下内容: 创建文件夹:

$name = str_replace(" ","_",$_POST['name']); // replace space with an underscore
$dir = "images/".$name;
mkdir($dir);

将临时文件移动到右侧文件夹:

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

并且您应该拥有自己描述的解决方案。