我有一项学校作业,我不确定老师希望我们如何完成任务。
- 我们只需要将上传的文件作为临时文件(index.php)
- 文件的输出大小(upload.php)
- 用户可以确认是否保存文件(upload.php)
所以,我已经否决了大多数,但我的问题在于将临时文件创建为永久文件。
index.php
<html>
<form action="http://mysite.org/~me/upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br />
<input type="submit" value="Now upload it!">
</form>
</html>
上传.php
<?php
if (($_FILES["file"]["type"] == "application/vnd.ms-excel"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
}
}
?>
<form action="" method="POST">
<input type="submit" value"YES please save">
<form>
<?php
if (isset($_POST['submit']))
{
//Code for saving file
echo 'File saved!';
}
?>
这样做可能吗?我的最后一个echo语句不起作用,所以我怀疑文件保存是否也起作用。
希望下面的评论能帮助你解决你遇到的问题。
如果你还没有意识到这一点,那么一旦处理上传文件的PHP请求终止,任何用PHP上传的文件都会被删除。这意味着,如果您不处理上传的临时文件,那么当PHP脚本终止时,它将被删除。
您感兴趣的一个函数是move_uploaded_file(),它将把上传的临时文件移动到您选择的永久位置。
由于文件将被上传,然后你必须显示大小并要求用户确认上传,当用户尚未确认要保留上传时,你必须将临时文件移动到一个永久的临时位置。
我不确定你是否已经被介绍到会话,但如果没有,你可能需要一些隐藏的表单元素来跟踪他们上传的文件,否则你可以在会话中保留这些信息。
然后,当某人提交表格说他们想保留文件时,你可以再次将其移动到永久位置,或者如果他们拒绝,则删除文件。问题是,如果他们从不说是或否,那么文件就会保留在系统中。
希望能有所帮助。
是的,这应该有效。您的if语句将捕获表单提交,然后在那里回显您的字符串。标记中的一些小错误:
<input type="submit" value"YES please save">
应该是
<input type="submit" value="YES please save" name="submit">
PHP中的最终if语句正在查找名为"submit"的后变量,但<input type="submit">
标记没有名称。
上传完成后,文件将保存到临时位置。您可以使用$_FILES['file]['tmp_name']
访问此临时文件,但如果您不采取任何措施,该文件将在请求结束时被删除。这意味着当用户单击YES please save
按钮时,该文件不再可用。
这意味着,当您第一次调用upload.php文件时,必须首先将文件保存到磁盘。当用户决定是否永久保存文件时,无法将文件"保存在内存中"。