我是PHP和AMPPS的新手。我正在尝试一个非常简单的文件上传屏幕,使用这个例子:
http://www.tutorialspoint.com/php/php_file_uploading.htm
- HTML要求用户上传一个文件
- 然后操作调用和"uploader.php"
- 这个uploader.php应该将文件从源文件移动到目标文件
- file_uploads=打开//在PHP INI文件中
- upload_tmp_dir="C:\Users\t_dutta \Documents\Projects\AMPPS\Domains\test-domain2\tempfiles"
- 每次运行HTML表单时,上面临时目录的时间戳都会更新
- 在代码中,我粘贴了我尝试过的各种版本的复制功能
HTML表单(Form.HTML)代码:
<form action="php/uploader.php" method="post"
enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
PHP代码(uploader.PHP):
<?php
$file_path = "\temp";
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
$path = $root . "\finalfiles\";
$real_path = realpath($path);
if( $_FILES['file']['name'] != "" )
{
echo $_FILES['file']['name'] . "<p></p>";
echo $_SERVER['DOCUMENT_ROOT'] . "<p></p>";
echo $real_path . "<p></p>";
//Copy Function 1st Version
copy ($_FILES['file']['name'], $_SERVER["DOCUMENT_ROOT"]) or
die("<p>Could not copy file!</p>");
//Copy Function 2nd Version
//copy ($_FILES['file']['name'], $root) or
// die("<p>Could not copy file!</p>");
//Copy Function 3rd Version
//copy ($_FILES['file']['name'], $path) or
// die("<p>Could not copy file!</p>");
//Copy Function 4th Version
//copy ($_FILES['file']['name'],"C:Userst_duttaDocumentsProjectsAMPPS
//Domainstest-domain2finalfiles") or die("<p>Could not copy file!</p>");
}
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>
错误消息:
PN.txt
C:/Users/t_dutta/Documents/Projects/AMPPS/Domains/test-domain2
C:Userst_duttaDocumentsProjectsAMPPSDomainstest-domain2finalfiles
Warning: copy(PN.txt) [function.copy]: failed to open stream: No such file or directory in C:Userst_duttaDocumentsProjectsAMPPSDomainstest-domain2phpuploader.php on line 13
Could not copy file!
这应该有效:
// put this line after $root declaration (after line 2)
$target = $root . basename($_FILES["file"]["name"]);
// replace copy() function with this
(move_uploaded_file($_FILES["file"]["tmp_name"], $target))
move_uploaded_file
函数比使用copy()
更相关
点击此处了解更多信息
我现在已经设法解决了这个问题。正如您所指出的,这个问题确实与我传递给复制函数的参数有关。
我首先将代码从copy()更改为move_uploaded_file()。然后将第一个参数从"$_FILES['file']['name']"更改为"$_FILES['file']['tmp_name']"。然后我按照你的建议修改了目标路径(在第二个论点中)。
我以这种方式构建了目标路径(在Windows上):
$path=$root。"\"。basename($_FILES['file']['name']);
附加代码:move_uploaded_file($_FILES['file']['tmp_name'],$path)
其中$path=$root。"\"。basename($_FILES['file']['name']);
它成功了!!!非常感谢你的帮助!!!