【发布时间】:2014-12-04 17:40:36
【问题描述】:
我需要使用 PHP 和 HTML 表单将文件上传到服务器。
我使用了 w3school 的示例:PHP 5 File Upload,这对我很有帮助。
当然,为了解决我的问题,我需要修改该代码,所以情况是这样的:
1) 将 HTML 表单放入 fileform.php:
<!-- fileform.php -->
<form action="upload.php" method="post" enctype="multipart/form-data">
<h3>Upload a file:</h3>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload" name="submit">
</form>
2)这是我的upload.php:
<?php
/* upload.php */
set_time_limit(0);
$targetDir = "/path/to/upload/dir";
$targetFile = $targetDir . basename($_FILES["fileToUpload"]["name"]);
$upload = 1;
$fileType = pathinfo($targetFile, PATHINFO_EXTENSION);
if(isset($_POST["submit"]))
{
/* Check file size */
if($_FILES["fileToUpload"]["size"] > 50000000000)
{
echo "Sorry, your file is too large.";
$upload = 0;
ob_end_flush();
include("fileform.php");
}
/* Allow certain file formats */
if($fileType != "data" )
{
echo "Sorry, non valid filetype.";
$upload = 0;
ob_end_flush();
include("fileform.php");
}
/* Check if $uploadOk is set to 0 by an error */
if($upload == 0)
{
echo "Sorry, your file was not uploaded.";
ob_end_flush();
include("fileform.php");
}
else
{
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile))
{
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
}
else
{
echo "Sorry, there was an error uploading your file.";
}
ob_end_flush();
include("fileform.php");
}
}
我可以正确上传文件,但无法正确重新加载 PHP 页面。 它只出现一个带有白色背景的页面:
文件file.data已上传。
警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 已在 /var/www/login 中发送标头(输出开始于 /var/www/upload.php:40) .php 在第 4 行
带有PHP页面的一些图标...
我很确定我在 upload.php 文件中做错了什么,但我不知道究竟是什么问题以及如何修复它。
如何更改代码才能正确重新加载 PHP 页面?
提前感谢您的帮助。
【问题讨论】:
-
被提名重新开放 - 上面的 session_start() 哪里写的?
-
@symcbean Errr... 有问题吗?
Warning: session_start() [function.session-start]: Cannot send session cache limiter......用 粗体 字母表示。问题应该保持关闭。它甚至在下面的答案中。 -
在所有这些回答之后,我必须感谢你们的建设性回答和帮助。但是,我按照 Rohit Jindal 的建议修改了代码(这似乎是最明确的代码示例)并且它可以工作。好吧,页面重新加载并没有达到应有的效果,但也许这只是另一个需要解决的问题。
-
@Fred:它只出现在错误消息中 - 不在代码中。虽然可以在不显式调用会话启动的情况下进行会话(如果您在 .ini 文件中设置 session.auto_start ),但您不会得到引用的错误。这里显示的代码没有产生这里显示的错误。
标签: php file-upload