2013-07-31 96 views
0

通常我會簡化我的代碼,或者只顯示給我麻煩的部分。但在這種情況下,我不知道發生了什麼問題,所以我粘貼了整個事情。對不起。php move_uploaded_file不工作

好的,下面的腳本獲取由ajax發送的值並將它們上傳到sql數據庫中。 完成後,它將圖像從一個文件夾移動到另一個文件夾中。

整個腳本可以正常工作,除了'move_uploaded_file'位之外,它還可以做它應該做的事情。所以它正確地執行了sql部分,並且所有會話名稱,字符串編輯等都是正確的。

我回應了腳本生成的文件的名稱,它們是正確的。這些文件夾也可以被讀取和寫入。等待移動的文件存在於該文件夾中。

我錯過了什麼?爲什麼move_uploaded_file不起作用?預先感謝所有。

--changed move_uploaded_file()以重命名(),僅適用於通過POST上載的文件還沒有working--

<?php 

session_start(); 
unset($_SESSION['reference']); 

$name = $_GET['name']; 
$category = $_GET['category']; 
$subCategory = $_GET['subCategory']; 
$date = $_GET['date']; 
$address = $_GET['address']; 
$city = $_GET['city']; 
$state = $_GET['state']; 
$host = $_GET['host']; 
$info = $_GET['info']; 
$adder = $_SESSION['user']; 

//turn into array 
$array = array(); 
$array[0]=$name; 
$array[1]=$category; 
$array[2]=$subCategory; 
$array[3]=$date; 
$array[4]=$address; 
$array[5]=$city; 
$array[6]=$state; 
$array[7]=$host; 
$array[9]=$info; 
$array[11]=$adder; 


try { 

$con = new PDO('mysql:host=localhost;dbname=test'); 
    //$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $refid=$con->prepare(" SELECT MAX(id) FROM createX "); 
    $refid->execute(); 
    $id = $refid->fetchColumn(); 
    $id=$id+1; 
    $newDate = str_replace('-', '', $date); 
    $reference = $id.$newDate; 
    $array[10]=$reference; 
    $array[8] = $_SESSION['imagePath'].$reference.'.'.$_SESSION['imageExt']; 

    $insert = $con->prepare(" INSERT INTO createX 
    (name,category,subCategory,date,address,city,state,host,imagePath,info,ref,adder) 
     VALUES (?,?,?,?,?,?,?,?,?,?,?,?) "); 
    $insert->execute($array); 

    rename('../tempUploads/'.$_SESSION['imagePath'].$_SESSION['imageExt'] , 
    '../uploads/'.$_SESSION['imagePath'].$reference.'.'.$_SESSION['imageExt']); 

} 

catch(PDOException $e) { //try 
    echo 'error'; 
//echo 'ERROR: ' . $e->getMessage(); 
} 

$_SESSION['reference'] = $reference; 

unset($array); 
session_write_close(); 


?> 
+0

move_uploaded_files僅適用於通過POST上傳的文件。源文件名應該來自$ _FILES ['xxx'] ['tmp_name']'。 – Barmar

+0

文件已發佈? – mehdi

+0

嘿,所以文件上傳到服務器的臨時文件。然後我把它移到我自己的臨時文件夾(不是服務器臨時文件夾),所以我可以查看它。現在我想從mytemp文件夾移動到另一個文件夾,我的permant上傳文件夾。 – seamus

回答

4

move_uploaded_file()是。源文件名應該來自$_FILES['xxx']['tmp_name'],並且相對於用於臨時保存發佈文件的目錄進行解釋。

如果您想移動其他文件,請使用rename()

+0

k,我現在正在測試它,看它是否有效。不知道。假設move_uploaded_files用於移動所有文件。謝謝。 – seamus

+0

總是檢查手冊:「此函數檢查以確保由filename指定的文件是有效的上載文件(這意味着它是通過PHP的HTTP POST上載機制上載的)。」 –

+0

K仍然無法正常工作,將其更名爲(...) – seamus