无法在 Windows 服务器中复制或移动上传的文件
Cannot copy or move uploaded files in Windows Server
(这个问题最初是在服务器故障中提出的。我把它移到了这里,因为我没有足够的信用来在那里开始赏金。)
我正在尝试让我的 Windows Server 2012 R2
托管一个 webpage 用户可以上传文件的地方。
<!-- indexfile.html -->
<form action="uploadfile.php" method="post" enctype="multipart/form-data">
Browse for File to Upload: <br>
<input type="file" name="file" id="file" size="80"> <br>
<input type="submit" id="u_button" name="u_button" value="Upload the file">
</form>
// uploadfile.php
<?php
$file_result = "";
if ($_FILES["file"]["error"] > 0)
{
$file_result .= "No File Uploaded or Invalid File ";
$file_result .= "Error Code: " . $_FILES["file"]["error"] . "<br>";
} else {
$file_result .=
"Upload: " . $_FILES["file"]["name"] . "<br>" .
"Type: " . $_FILES["file"]["type"] . "<br>" .
"Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>" .
"Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (chmod("C:/inetpub/testaddbbacom/test", 0777))
$file_result .= "chmod sucessful!<br>";
else
$file_result .= "chomod NOT sucessful!<br>";
copy($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["tmp_name"]);
$file_result .= "File Upload Successful!";
echo $file_result;
}
?>
问题是,文件可以上传到 C:\Windows\Temp\
,而 copy
不工作。因此,C:\inetpub\testaddbbacom\test
始终为空。我确实尝试通过 chmod
更改此文件夹的权限,但它并没有真正起作用。下面是两个文件夹的权限比较:
我也试过move_uploaded_file
,但是也没用,可能是同样的权限原因吧...
有谁知道如何解决这个问题?
替换,
copy($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["tmp_name"]);
加上以下,
move_uploaded_file($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["name"]);
不同之处在于在目标中使用文件名即 $_FILES["file"]["name"]) 而不是 $_FILES["file"]["tmp_name"])路径。
(这个问题最初是在服务器故障中提出的。我把它移到了这里,因为我没有足够的信用来在那里开始赏金。)
我正在尝试让我的 Windows Server 2012 R2
托管一个 webpage 用户可以上传文件的地方。
<!-- indexfile.html -->
<form action="uploadfile.php" method="post" enctype="multipart/form-data">
Browse for File to Upload: <br>
<input type="file" name="file" id="file" size="80"> <br>
<input type="submit" id="u_button" name="u_button" value="Upload the file">
</form>
// uploadfile.php
<?php
$file_result = "";
if ($_FILES["file"]["error"] > 0)
{
$file_result .= "No File Uploaded or Invalid File ";
$file_result .= "Error Code: " . $_FILES["file"]["error"] . "<br>";
} else {
$file_result .=
"Upload: " . $_FILES["file"]["name"] . "<br>" .
"Type: " . $_FILES["file"]["type"] . "<br>" .
"Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br>" .
"Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (chmod("C:/inetpub/testaddbbacom/test", 0777))
$file_result .= "chmod sucessful!<br>";
else
$file_result .= "chomod NOT sucessful!<br>";
copy($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["tmp_name"]);
$file_result .= "File Upload Successful!";
echo $file_result;
}
?>
问题是,文件可以上传到 C:\Windows\Temp\
,而 copy
不工作。因此,C:\inetpub\testaddbbacom\test
始终为空。我确实尝试通过 chmod
更改此文件夹的权限,但它并没有真正起作用。下面是两个文件夹的权限比较:
我也试过move_uploaded_file
,但是也没用,可能是同样的权限原因吧...
有谁知道如何解决这个问题?
替换,
copy($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["tmp_name"]);
加上以下,
move_uploaded_file($_FILES["file"]["tmp_name"], "C:/inetpub/testaddbbacom/test/" . $_FILES["file"]["name"]);
不同之处在于在目标中使用文件名即 $_FILES["file"]["name"]) 而不是 $_FILES["file"]["tmp_name"])路径。