2011-01-04 10 views
1

ここで何をしようとしていますか、現在のファイルを入手してアップロードし、ファイルの拡張子を見つけて名前を変更してください!結果をエコーし​​ます!!しかしそれは間違っているように見えます。 :((アップロード時にファイルの拡張子が見つかりましたか?

$fieldname = $_REQUEST['fieldname']; 
    $uploaddir = 'uploads/'; 
    $uploadfile = $uploaddir . basename($_FILES[$fieldname]['name']); 


    if (move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadfile)) { 

    //find the extension 
    $extension= pathinfo($uploadfile); 

    //rename the file 
     rename ($uploadfile, "newfile.".$extenion['extension'].""); 
echo "uploads/newfile.'".$extension['extension']."'"; // "success" 

} 
+0

エクストラ:私はmove_uploaded_fileの名前を変更すると、アップロード後にファイルの名前を変更するだけです。 –

+0

は解決策を探すためにここに来ましたが、あなたのスクリプトに誤字がありました: '$ extension ['extension']'の代わりに '$ extenion ['extension']' – Ivan

答えて

2

私はあなたがこのような何かを行うべきだと思います"ファイルでは、renameを手動で呼び出す必要はありません。ただ1回の操作で作成してください。

PATHINFO_EXTENSIONpathinfoに渡したことに気がつきました。これは、完全なパス情報ではなく、拡張子だけが必要なためです。

最後に、$_REQUESTの代わりに$_POSTを使用しました。あなたが何をしているのか本当にわからない限り、$_REQUESTを使用しないでください。これにより、Cookieやセッションを予期せずに改ざんする可能性があります。

+0

ありがとう、これは動作しますが、 !あなたは私に例を示すことができますか、お尻の痛みで申し訳ありません! –

+0

@ジョン:すでにそこにいるはずです。 'pathinfo'はここでは無用ですが、後で拡張子を必要とするかもしれないと仮定しました。 'basename'はファイルから拡張子を削除しません。あなたはどんな出力を得ていますか? – netcoder

+0

@netcoder、アップロードの実際の名前であるphoto.jpgを取得していますが、名前をnewfile.jpgに変更します。 –

0

あなたはmove_uploaded_fileに2番目の引数として新しいファイル名を使用する必要があります。

$fieldname = $_POST['fieldname']; // don't use $_REQUEST 
$extension = pathinfo($_FILES[$fieldname]['name'], PATHINFO_EXTENSION); 

$uploaddir = 'uploads/'; 
$uploadfile = $uploaddir . 'newfile.'.$extension; 

if (move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadfile)) { 
    // success 
} 

move_uploaded_fileすでに「名前の変更:

$fieldname = $_REQUEST['fieldname']; 
$tmpfile = $_FILES[$fieldname]['tmp_name']; 

$info = pathinfo($tmpfile); 
$filename = 'newfile.' . $info['extension']; 

$uploaddir = 'uploads/'; 
$uploadfile = $uploaddir . $filename; 

if(move_uploaded_file($tmpfile, $uploadfile)) { 
    echo $uploadfile; 
} 
+0

$ tmpfile = $ _FILES ['fieldname'] ['tmp_name']、リクエストからファイルへ、しかしその後にアップロードされるファイルは、newfile.jpgの代わりにnewfile.tmpと呼ばれます。 –

0
$fieldname = $_POST['fieldname']; #its never going to be a GET! ..not sure y u need this though, the file field should hold the array key, but anyway... 
#get the extension by removing everything before the last dot 
$extension = preg_replace('@.+\[email protected]', '', $_FILES[$fieldname]['name']); 
$newname = "newfile.".$extension; 

$uploaddir = 'uploads/'; 
$uploadfile = $uploaddir . $newname; 

if (move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadfile)) { 

echo "$uploadfile"; // "success" 

} 

未定ですが、ロジックはポイントまで真っ直ぐです。

+0

このdeosnt仕事!申し訳ありません:(( –

+0

しかし、私はあなたが延長を持っている方法を愛しています! –

+0

:)まあ、それはテストされていませんでしたが、あなたはすべて同じように嬉しいです。 – PHPGuyZim

関連する問題