上传文件html / php

时间:2012-03-29 19:48:57

标签: php html forms file-upload

我目前正在尝试通过简单的html和php将csv文件上传到数据库。我的问题是我想知道事情是如何运作的/实际发生的事情(我猜这就是我有这么多问题的原因)

所以无论如何我的HTML如下:

<html>
<form action="mysite.php" method="POST">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>

我的PHP只是:

<?php
echo 'Success';
?>

在我真正将文件存储在我喜欢的数据库之前,实际存储的文件在哪里?

它是否在服务器上创建为临时文件? 保存在服务器ram上? 它实际上没有做任何事情,因为它没有被告知做任何事情(又名:保存到数据库)

由于

5 个答案:

答案 0 :(得分:2)

是的,它会在服务器上的临时文件中,但在你的情况下它不会因为你错过了编码类型:

<form enctype="multipart/form-data" action="__URL__" method="POST">

以下是文件上传手册php file uploading

您可以通过对变量名执行var_dump($ _ POST)和为文件数据执行var_dump($ _ FILES)来查看上载内容,以帮助理解。

正如您在文件上传后可以在参考文献中看到的那样,您需要将其从临时位置移动到最终目的地。

答案 1 :(得分:1)

我强烈建议您阅读this

本质上,文件是通过HTTP上传的,php将其存储在服务器上的临时文件中。

您可以使用全局$_FILES数组来获取该临时文件的句柄。

答案 2 :(得分:0)

当您上传文件时,它会存储在服务器上,之后如果要将此CSV导入数据库,则必须使用php脚本解析(CSV Parser)并插入DataBase。或者,如果您只想存储文件路径,而不是CSV中的数据,那么您必须只存储DataBase中的文件路径。

答案 3 :(得分:0)

只要脚本正在运行,文件就会暂时存储。这些信息可以在$ _FILES。

中找到

答案 4 :(得分:0)

该文件应存储在服务器上的临时文件中,您可以使用$_FILES超全局查找有关该文件的信息。您可以从更改脚本开始转出超全局以查看其中的内容:

<?php 
print_r($_FILES); 
?> 

PHP提供了一系列有用的函数来处理文件上传,你应该使用它们而不是仅仅进入文件系统 - 记住任何文件上传都算作用户输入,因此成为安全风险!您应首先检查文件是否是您要查找的文件:

$filename = $_FILES['attachment']['tmp_name'];
if (!is_uploaded_file($filename)) {
    // error
}

您可以使用move_uploaded_file()功能将文件粘贴到更方便的位置:

if (move_uploaded_file($_FILES['attachment']['tmp_name'], '/more/useful/path') {
    // all good
}

最后你应该记住,不仅文件本身,而且报告的文件名和文件大小都是用户提交的数据,并确保在使用前对其进行适当的清理。

这里有一些方便的东西:http://uk.php.net/manual/en/features.file-upload.php