0

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

我创建了一个包含图片、人名的表单。单击“提交”按钮后,php 和 mysql 脚本将在本地文件夹 (public_html/images/$name/) 中创建一个新目录。图像文件夹中新创建的文件夹应命名为人名(不带空格)。然后,将获取文件夹地址并将其放入 phpMyAdmin 表中的列中。例如,一个名叫比尔的人在表格中填写了他的数据。他上传了他的照片 (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

4

3 回答 3

1

我想给出两个想法:

  1. 如果用户可以输入或多或少的任何内容作为名称,仅仅替换下划线的空格可能是不够的。我建议使用适当的编码url_encode()url_decode()因为路径的行为接近 url。想想像“Jon O'Hara”或“Nguy§/../äßt*+'s”这样的名字正在输入......
  2. 通常您的任务解决方式不同:您为用户创建一个数据库条目,为该条目生成一个 id。通常这是一个自动递增的数字索引,这样您就可以避免两个帐户共享相同名称(发生...)和“外来字符”的问题。你拿那个id 作为要创建的目录的名称。这样以后很容易再次找到该文件夹​​。当您在数据库中识别出正确的条目时,您可以构建文件夹路径而无需存储它。这也有一个优点,即您要逐步生成的文件夹结构不是硬编码的。相反,您可能会得出要重组它的结论。通过重建路径,您只需更改重建算法,而在存储最终路径时,您必须更改数据库中的所有路径。
于 2012-11-14T10:47:01.940 回答
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 提出这个问题

于 2012-11-14T10:42:30.450 回答
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); 

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

于 2012-11-14T10:46:43.360 回答