PHP+Windows7+AMPPS:[function.copy]:无法打开流:没有这样的文件或目录



我是PHP和AMPPS的新手。我正在尝试一个非常简单的文件上传屏幕,使用这个例子:

http://www.tutorialspoint.com/php/php_file_uploading.htm

  1. HTML要求用户上传一个文件
  2. 然后操作调用和"uploader.php"
  3. 这个uploader.php应该将文件从源文件移动到目标文件
  4. file_uploads=打开//在PHP INI文件中
  5. upload_tmp_dir="C:\Users\t_dutta \Documents\Projects\AMPPS\Domains\test-domain2\tempfiles"
  6. 每次运行HTML表单时,上面临时目录的时间戳都会更新
  7. 在代码中,我粘贴了我尝试过的各种版本的复制功能

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']);

它成功了!!!非常感谢你的帮助!!!

最新更新