我有一个问题是将.csv文件导入到php脚本中以添加到mysql服务器,我本地托管服务器,当我测试脚本时输出错误说文件位置不存在因为它搜索文件所在该网站已存储,而不是存储在文件实际所在的桌面上。
<form id="import" action="edit.php" method="post" enctype="multipart/form-data">
Select BOM .csv file to upload:
<input name="file" type="file" required="required" id="file" form="import">
<input name="submit" type="submit" form="import" value="import">
<?php
if(isset($_POST['submit']))
{
$file = $_FILES['file'];
$query = "LOAD DATA INFILE '$file' INTO TABLE `boards` FIELDS TERMINATED BY ',' IGNORE 1 LINES";
$Result = mysql_query($query) OR die(mysql_error());
}
?>
</form>
有谁知道如何上传实际的.csv文件,以便将其添加到sql数据库中?
答案 0 :(得分:0)
最有可能的问题是您需要文件的实际名称/位置。现在你可能会认为这是你给文件的名字。然而,它实际上是服务器提供其所拥有文件副本的名称。这样做是为了避免各种文件名(特殊字符)的肮脏,以及防止重复的名称被覆盖。在PHP和超级全局$ _FILES中,您会发现它是数组键tmp_name
[file] => Array
(
[name] => MyFile.jpg
[type] => image/jpeg
[tmp_name] => /tmp/php/php6hst32
[error] => UPLOAD_ERR_OK
[size] => 98174
)
正如您所看到的,tmp_name(此混乱/tmp/php/php6hst32
)是服务器上的实际物理文件,名称键是您上传时为其指定的名称(只是一个字符串)。大多数情况下,您可以使用rename()
功能重命名并移动它。例如rename( $_FILES['tmp_name'], 'path to your upload place/'.$_FILES['name']);
或copy()
,在复制/移动文件后(在这种情况下为tmp / php /),基本上会将你给它的名称放回去。
您还可以使用move_uploaded_file()
http://php.net/manual/en/function.move-uploaded-file.php
或者您可以从临时文件夹中打开它。可能有一些安全原因使用移动上传文件而不是其他选项(或第一个),但这可能是另一天。