2011-04-20 140 views
0
我有这个功能麻烦

,我似乎无法让我的文件传输 - >当文件被上传到最终位置 - >我有什么遗漏:文件上传问题

问题功能:

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 View:

<?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')?> 
+0

您的目的地文件夹是否有正确的权限设置为可以在那里复制的文件? print_r($ _ FILES)是否提供有关正在上传的文件的信息,还是不会返回任何内容? – Nick 2011-04-20 02:05:59

+0

是的,是的,并返回正确的数据 – 2011-04-20 04:19:41

回答

0

每次你要的东西上传到新的服务器,我建议要检查一些要点:

  • 确保和chmod 777(或使IR可写)你要的目录使用。 (我首先使用777,如果它的工作尝试把一些更加限制)

  • 检查phpinfo知道正确的路径,post_max_size和upload_max_filesize。 (通常它无助于把在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. 
0

试着把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'])); 
} 

而且,你的变量$目标不被使用。

<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> 
+0

当我发布这个问题时,我正在调试,因此$目标未被使用将尝试基名现在 – 2011-04-20 04:01:52

+0

@Flipper没有工作 – 2011-04-20 04:06:06

+0

@Jess McKenzie你可以发布表单的HTML部分?你确定这个方法被调用吗?目录权限设置是否正确? – Flipper 2011-04-20 04:23:57