如何使用smarty将文件上传到服务器?
问题描述:
我已经编写了上传文件到服务器的代码,如下所示。如何使用smarty将文件上传到服务器?
Home.tpl
<form enctype="multipart/form-data" method="post" action="upload_file.php" >
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
upload_file.php
if(($_FILES["file"]["size"] > 0))
{
$fileName = $_FILES["file"]["name"];//the files name takes from the HTML form
$fileTmpLoc = $_FILES["file"]["tmp_name"];//file in the PHP tmp folder
$fileType = $_FILES["file"]["type"];//the type of file
$fileSize = $_FILES["file"]["size"];//file size in bytes
$fileErrorMsg = $_FILES["file"]["error"];//0 for false and 1 for true
$target_path = "uploads/" . basename($_FILES["file"]["name"]);
$moveResult = move_uploaded_file($fileTmpLoc, $target_path);
}
但我得到 '未定义指数:文件' 的错误。请帮我摆脱那里。
答
变化
if(($_FILES["file"]["size"] > 0))
到
if((isset($_FILES["file"]["size"]) && $_FILES["file"]["size"] > 0))
+0
我喜欢你所说的话,但我不知道有什么错误。但脚本没有运行 – soundy
答
我认为它$ _FILES [ “文件”] [ “tmp_name的值”] [0]第一个文件。 用var_dump($ _ FILES)检查它;或print_r($ _ FILES) 然后用foreach进行迭代。像
foreach ($arr as &$value) {
//...
$moveResult = move_uploaded_file($fileTmpLoc, "uploads/" . basename($_FILES["file"]["name"][$arr]);
}
+0
那是不对的。对于多个文件没有$ _FILES [“file”] [“name”] [0]。 [0]会给出名字的第一个字符(但我不确定是否也在PHP中) –
你什么时候得到'未定义的索引:文件'错误? –
在你的'upload_file.php'中首先执行'var_dump($ _ FILES);'并检查它是否看起来像你期望的那样。 –
@Martinperry:当执行到达该行'if(($ _FILES [“file”] [“size”]> 0))''。我去那儿。 – soundy