Php 文件上载问题

Php 文件上载问题,php,file,upload,Php,File,Upload,我在使用此功能时遇到问题,我似乎无法传输我的文件->当文件上载到最终位置->我错过了什么: 问题函数: public function imageUpload(){ $this->bExisting = false; $location = "includes/images/Gallery/"; $target = $_FILES['ImagePath']['name']; move_up

我在使用此功能时遇到问题,我似乎无法传输我的文件->当文件上载到最终位置->我错过了什么:

问题函数:

  public function imageUpload(){
            $this->bExisting = false;
            $location = "includes/images/Gallery/";
            $target = $_FILES['ImagePath']['name']; 
            move_uploaded_file($_FILES['ImagePath']['tmp_name'], $location . $_FILES['ImagePath']['name'] );

  }
源代码视图

    <form id='imageUpload' action='addimage.php' method= 'post' enctype='multipart/form-data'> 

<fieldset> 

<label for='ImageName'>Image:</label> 

<input type='text' name='ImageName' id='ImageName' value=''  onblur=''/> 

<input type='hidden' name='MAX_FILE_SIZE' value='1000000' /> 

<label for='ImagePath'>Image Path:</label> 

<input type='file' name='ImagePath' id='ImagePath' value='' onblur=''/><input name='submit' id = 'submit' type='submit' value='Image Upload' /> 

</fieldset> 

图片:
图像路径:
PHP视图:

<?php
ob_flush();
include('includes/session.php');

include('includes/header.php');

include('includes/class/class.form.php');

include('includes/class/class.page.php');


$iPageID = 1; 

if(isset($_GET["PageID"])){

    $iPageID = $_GET["PageID"];
}

$EditedPage = new Page();

$EditedPage->loadPage($iPageID);

$apageInformation = array(); // Information From DB Sticky
$apageInformation["Name"] = $EditedPage->getPageName();
$apageInformation["PageContent"] = $EditedPage->getPageContent();
$EditedPage->getPageContent();

//Sets form information

$Action = "editpage.php?PageID=".$iPageID; // Sets form file

$formEdit = new Form($Action, 'editPage','post','return CheckEditPage();','');

//Sets StickyData

$formEdit->setStickyData($apageInformation);

//Sets the Message

$Message = "";

//If it is set do below

if(isset($_POST["submit"])){

    $formEdit->setStickyData($_POST);

    $formEdit->checkNotEmpty("Name");

    $formEdit->checkNotEmpty("PageContent");


    if($formEdit->getValid() == true){

            $EditedPage->setPageName = $database->escape_value($_POST["Name"]);

            $EditedPage->setPageContent = $database->escape_value($_POST["PageContent"]);

           $EditedPage->updatePage();

        $Message = "Page Updated";

    }else{

        $Message = "You Have An Error Mate";
    }
}


$formEdit->openFieldset();
$formEdit->makeInputBox("Name","Name","CheckInput(this.id);");
$formEdit->makeTextArea("Content", "PageContent", "20","70", "CheckInput(this.id);");
$formEdit->makeSubmitButton("submit","Edit Page");
$formEdit->closeFieldset();
?>
   <section class="left">

    <h1  class="Heading">Edit Page</h1>

        <p class="loginError"><?php echo $Message ?></p>

        <?php echo $formEdit->getHTML(); ?>

    </section> <!-- Section Left End -->

    <section class="right">
        <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.
        Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
        It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
        </p>
    </section><!-- Section Right End -->


    <?php include('includes/footer.php')?>

编辑页面

Lorem Ipsum只是印刷和排版行业的虚拟文本。 自16世纪以来,Lorem Ipsum一直是行业标准的虚拟文本,当时一位不知名的印刷商拿起一个打印工具,将其拼凑成一本打印样本书。 它不仅存活了五个世纪,而且还跨越到电子排版,基本上保持不变。它在20世纪60年代随着包含Lorem Ipsum段落的Letraset表单的发布而流行,最近随着Aldus PageMaker等桌面出版软件的发布,包括Lorem Ipsum版本。

尝试在第二个参数周围放置basename()

public function imageUpload(){
    $this->bExisting = false;
    $location = "includes/images/Gallery/";
    $target = $_FILES['ImagePath']['name']; 
    move_uploaded_file($_FILES['ImagePath']['tmp_name'], $location . basename($_FILES['ImagePath']['name']) );
}
此外,未使用变量$target

<form enctype="multipart/form-data" action="FILEGOESHERE.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="ImagePath" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

选择要上载的文件:

每次您必须将内容上载到新服务器时,我建议您检查以下几点:

  • 确保要使用的目录为chmod 777(或使ir可写)。(我会首先使用777,如果它有效的话,试着设置一些更严格的限制)

  • 检查phpinfo以了解正确的路径、post_max_大小和upload_max_文件大小。(通常在html中不做任何更改)您必须在php.ini中更改它,或者有时托管提供商允许您使用.htaccess

如果检查这些点,我认为可能是路径。因此,我有时使用它来获取与您正在使用的脚本相关的路径。它不是很干净,但对我来说很管用:

$thepath = substr($_SERVER["SCRIPT_FILENAME"], 0, strrpos ($_SERVER["SCRIPT_FILENAME"], "/")); 
$location="$thepath/../includes/images/Gallery/"; // if it is in the parent directory of your script, for example.

您的目标文件夹是否设置了正确的权限,以便能够将文件复制到那里?print_r($_FILES)是否向您提供有关正在上载的文件的信息,或者它是否不返回任何信息?yes和yes返回正确的数据我在发布此问题时正在调试,因此$target not used将尝试basenamenow@JessMcKenzie你能把表单的HTML部分贴出来吗?您确定正在调用该方法吗?目录权限设置是否正确?我不知道$formEdit->getHTML()在做什么,但从外观上看,您很可能使用了错误的HTML。HTML应该看起来像我编辑的答案所包含的内容。已包含源视图请尝试从输入文件中删除value=''和onblur=''属性。这有时也会引起问题。