我试图在php上传一个csv文件。我也希望它能够接受任何类型的文件。
这是我正在使用的代码,但它始终输入“无法复制文件!”条件。
HTML代码
<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
PHP代码
<?php
if( $_FILES['file']['name'] != "" )
{
copy( $_FILES['file']['name'], "/var/www/html/uploads" ) or
die( "Could not copy file!");
}
else
{
die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name']; ?>
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes
<li>File type: <?php echo $_FILES['file']['type']; ?>
</ul>
</body>
</html>
我已经检查过uploads文件夹和html以及php文件是否有权777,所以他们应该可以上传这些文件
修改 我从php文件中删除了很多代码,并试图让它从文件系统上传(复制)一个硬编码的文件路径。
我观察到的是,如果我只是从命令行运行php upload.php,它就可以将文件从“下载”“上传”到桌面上。但是,如果在我的一台服务器上从浏览器和index.html运行相同的upload.php,它只会说“无法复制文件!”。在另一台服务器上,它下载upload.php文件。基本上,相同的脚本可以从命令行运行。无法在浏览器中使用。
(我在浏览器控制台上看不到任何错误消息等)
的index.html
<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
upload.php的
<?php
$a = 2;
$b = 1;
if( $a > $b )
{
copy( "/home/PepperBoy/Downloads/myfile.csv", "/home/PepperBoy/Desktop/myfile.csv" ) or die( "Could not copy file!");
}
else
{
die("No file specified!");
}
?>
<html>
<head>
<title>Uploading Complete</title>
</head>
<body>
<h2>Uploaded File Info:</h2>
<ul>
<li>Sent file: <?php echo $_FILES['file']['name']; ?>
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes
<li>File type: <?php echo $_FILES['file']['type']; ?>
</ul>
</body>
</html>
答案 0 :(得分:0)
name
数组中的$_FILES
值不包含文件的路径。请改用tmp_name
。您还需要为复制的文件命名,而不仅仅是目标目录。同时移动文件而不是复制文件,否则最终会使tmp目录混乱
move_uploaded_file( $_FILES['file']['tmp_name'], "/var/www/html/uploads/". $_FILES['file']['name'] )
or die( "Could not copy file!");
答案 1 :(得分:0)
将此替换为相同的代码行。
copy( $_FILES['file']['tmp_name'], "/var/www/html/uploads" ) or die( "Could not copy file!");