嘿伙计们,我只是想知道,你如何使用PHP将文件直接上传到你的网站?
例如:
人使用浏览按钮查找要上传的文件,然后一旦选定的文件目录出现在文本框中,当他们点击并“上传”按钮时,它会上传到名为“uploads”的网站上的目录。
有人可以告诉我该如何做到这一点,也许可以解释一下或将我链接到一个可以帮助我的资源吗?
感谢。
答案 0 :(得分:1)
有表格并在其中输入文件:
<form name="my_form" method="post" enctype="multipart/form-data" action="my_php_script.php">
<input type="file" name="my_file" />
</form>
然后在my_php_script.php
中,像处理任何其他POST请求一样处理文件上传。有关后端的详细信息,请参阅此页面:http://www.tizag.com/phpT/fileupload.php
$_FILES
数组包含与上传文件有关的数据。
$_FILES['uploadedfile']['name']
- 用户上传文件的原始路径。$_FILES['uploadedfile']['tmp_name']
- 驻留在服务器上的临时文件的路径。该文件应存在于具有临时名称的临时目录中的服务器上。您应该将文件从临时目录移动到更永久的存储(如uploads/
文件夹)。您可以使用move_uploaded_file()
函数执行此操作,如下所示:
move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $uploads_folder);
答案 1 :(得分:1)
所有内容都在PHP手册的Handling file uploads部分进行了解释。
我建议避免使用自it's not part of any standard以来的MAX_FILE_SIZE隐藏字段,没有已知的浏览器支持,并且很容易将其值修改为服务器端的affect PHP behavior。
答案 2 :(得分:0)
确保在表单元素中指定multipart/form-data
,然后包含文件字段。您需要在接收端执行一些额外的工作来获取文件数据并使用适当的名称存储它,而不是服务器上的默认/临时目录。
<form action="/some/url" enctype="multipart/form-data" method="post">
<input type="file" name="some_file" />
<intput type="submit" name="Upload that file!" />
</form>
答案 3 :(得分:0)
您应该使用enctype
设置为multipart/form-data
的HTML表单,例如:
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="file" name="thefile" />
</form>
然后在PHP中,您可以检查$_FILES['thefile']
以获取所需信息。该文件位于$_FILES['thefile']['tmpname']
,您可以使用move_uploaded_file()
将其从那里移动到您上传的文件到正确的文件夹:
move_uploaded_file($_FILES['thefile']['tmpname'], 'uploads/'.$_FILES['thefile']['name']);
当然,您需要进行额外的健全性检查,以确保您没有覆盖exisiing文件并且文件上传成功且没有错误。