2013-05-22 73 views
0

我已经编写了上传文件到服务器的代码,如下所示。如何使用smarty将文件上传到服务器?

Home.tpl

 <form enctype="multipart/form-data" method="post" action="upload_file.php" > 
    <label for="file">Filename:</label>&nbsp;&nbsp; 
    <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); 
    } 

但我得到 '未定义指数:文件' 的错误。请帮我摆脱那里。

+2

你什么时候得到'未定义的索引:文件'错误? –

+0

在你的'upload_file.php'中首先执行'var_dump($ _ FILES);'并检查它是否看起来像你期望的那样。 –

+0

@Martinperry:当执行到达该行'if(($ _FILES [“file”] [“size”]> 0))''。我去那儿。 – soundy

回答

0

变化

if(($_FILES["file"]["size"] > 0)) 

if((isset($_FILES["file"]["size"]) && $_FILES["file"]["size"] > 0)) 
+0

我喜欢你所说的话,但我不知道有什么错误。但脚本没有运行 – soundy

1

如果你每次都收到错误,它因为你没有设置变量$ _FILES。该变量仅在您提交表单后才设置。

在这种情况下,摆脱错误mesage,加可变的控制:

if((isset($_FILES["file"])) && ($_FILES["file"]["size"] > 0)) 
+0

我喜欢你说的话,但我不知道有什么错误。但脚本没有运行。 – soundy

+0

不是runinng意味着什么?错误? –

+0

我dint任何错误。整个脚本没有运行。 – soundy

0

我认为它$ _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中) –

相关问题