我搜索了整个互联网。但是,我无法得到答案。我还是初学者,我还在学习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
答案 0 :(得分:1)
我想提出两个想法:
url_encode()
和url_decode()
,因为路径的行为接近于网址。想想输入“Jon O'Hara”或“Nguy§/../äßt* +'s”之类的名字...... 答案 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);
并且您应该拥有自己描述的解决方案。