如何使用smarty将文件上传到服务器?

时间:2013-05-22 11:33:05

标签: php 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);
     }

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

3 个答案:

答案 0 :(得分:1)

如果每次都出错,那是因为你没有设置变量$ _FILES。该变量仅在您提交表单后设置。

在这种情况下,要摆脱错误消息,请添加变量控制:

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

答案 1 :(得分:0)

更改

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

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

答案 2 :(得分:0)

我认为第一个文件的$ _FILES [“file”] [“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]); 
}