2011-04-20 141 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