繁体   English   中英

使用php将文件上传到服务器

[英]Upload file to a server using php

很好,很高兴问候你,

我有一个带有 Angula、Laravel 和 Bootstrap 的项目,我正在创建一个表单,以便能够通过项目的网站将文件上传到服务器,我将此代码放在下面,但它无法正常工作,你能帮我告诉我必须放置的代码或告诉我我失败的地方?

等待您的答复,收到亲切的问候,

非常感谢,

这是在我的 HTML 中

<div class="container">
  <div class="row">
    <form method="post" action="test_act.php" enctype="multipart/form-data">
      <div>
        <span>Choose file</span>  
           <input type="file" name="fileToUpload" id="fileToUpload"><br/>
              <input type="submit" name="fupload" id="fupload">
       </div> 
     </form>
  </div>
</div>

test_act.php

<?php 
include ("test_cls.php");
if(isset($_POST['fupload']))
{
    $dirpath="upload";
    $uploader   =   new Uploader();

    $uploader->setExtensions(array('jpg','jpeg','png','gif','doc','docx', 'pdf'));  //allowed extensions list//

    $uploader->setMaxSize(1);                          //set max file size to be allowed in MB//

    $uploader->setDir($dirpath);

    if($uploader->uploadFile('fileToUpload'))          //txtFile is the filebrowse element name //
    {   
        $suc_file  =   $uploader->getUploadName(); //get uploaded file name, renames on upload//
        echo $suc_file." successfully uploaded";
    }
    else                    //upload failed
        echo $uploader->getMessage(); //get upload error message
}
?>

test_cls.php(上传类)

<?php
class Uploader
{
    private $destinationPath;
    private $errorMessage;
    private $extensions;
    private $maxSize;
    private $uploadName;
    public $name='Uploader';

    function setDir($path){
        $this->destinationPath  =   $path;
    }

    function setMaxSize($sizeMB){
        $this->maxSize  =   $sizeMB * (1024*1024);
    }

    function setExtensions($options){
        $this->extensions   =   $options;
    }

    function setMessage($message){
        $this->errorMessage =   $message;
    }

    function getMessage(){
        return $this->errorMessage;
    }

    function getUploadName(){
        return $this->uploadName;
    }

    function uploadFile($fileBrowse){
        $result =   false;
        $size   =   $_FILES[$fileBrowse]["size"];
        $name   =   $_FILES[$fileBrowse]["name"];
        $ext    =   pathinfo($name,PATHINFO_EXTENSION);

        $this->uploadName=  $name;

        if(empty($name))
        {
            $this->setMessage("File not selected ");
        }
        else if($size>$this->maxSize)
        {
            $this->setMessage("Too large file !");
        }
        else if(in_array($ext,$this->extensions))
        {
            if(!is_dir($this->destinationPath))
                mkdir($this->destinationPath);
            if(!is_dir($this->destinationPath.'/'.$ext))
                mkdir($this->destinationPath.'/'.$ext);

            if(file_exists($this->destinationPath.'/'.$ext.'/'.$this->uploadName))
                $this->setMessage("File already exists. !");
            else if(!is_writable($this->destinationPath.'/'.$ext))
                $this->setMessage("Destination is not writable !");
            else
            {
                if(move_uploaded_file($_FILES[$fileBrowse]["tmp_name"],$this->destinationPath.'/'.$ext.'/'.$this->uploadName))
                {
                    $result =   true;
                }
                else
                {
                    $this->setMessage("Upload failed , try later !");
                }
            }
        }
        else
        {
            $this->setMessage("Invalid file format !");
        }
        return $result;
    }

    function deleteUploaded($fileBrowse){
        $name   =   $_FILES[$fileBrowse]["name"];
        $ext    =   pathinfo($name,PATHINFO_EXTENSION);
        unlink($this->destinationPath.'/'.$ext.'/'.$this->uploadName);
    }
}
?>

您的代码运行良好。

但是,您可能会检查:

  • 是否创建了上传目录
  • 上传目录是否具有所需的权限
  • 您的文件未超过定义的 php.ini 上传限制大小

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM