0

通常、このためにコードを単純化するか、問題を引き起こしている部分のみを表示します。しかし、この場合、何がうまくいかないのかわからないので、すべてを貼り付けました。申し訳ありません。

以下のスクリプトは、ajax から送信された値を取得し、SQL データベースにアップロードします。それを行った後、画像をフォルダーから別のフォルダーに移動します。

スクリプト全体が正常に動作し、「move_uploaded_file」ビットを除いて、想定どおりに動作します。そのため、SQL 部分が正しく実行され、すべてのセッション名、文字列編集などが正しく行われます。

スクリプトが生成するファイルの名前をエコーし​​ましたが、それらは正しいです。フォルダも読み書き可能です。そして、フォルダ内に移動待ちのファイルが存在します。

私は何が欠けていますか?move_uploaded_file が機能しないのはなぜですか? よろしくお願いします。

-- move_uploaded_file() を rename() に変更しましたが、まだ機能していません --

<?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();


?>
4

1 に答える 1

6

move_uploaded_file()POST 経由でアップロードされたファイル専用です。ソース ファイル名は から取得する必要が$_FILES['xxx']['tmp_name']あり、投稿されたファイルを一時的に保持するために使用されるディレクトリに対して相対的に解釈されます。

他のファイルを移動する場合は、rename().

于 2013-07-31T18:23:57.350 に答える