2016-08-03 3 views
0

私はjson投稿をアップロードしています。それはうまく動作します。アップロードされたファイルの名前を変更してアップロードします。私はそれを行う方法を知っています。イメージタイプ拡張の前にファイル名の末尾に数字を追加したいと思います。私はそれを行う方法を知っています。私は一度に複数の画像をアップロードするときに、新しいファイルごとに1ずつインクリメントするようにしたい。私はここでそれ:-(を行う傾けるイム一緒に働くものです:アップロードした画像の名前を数値順に変更(i + 1)

if (!file_exists($vendimagepath)) { 
    mkdir($vendimagepath,0777,TRUE);   
} 

$valid_extensions = array('gif', 'png', 'jpeg', 'jpg'); 
$uploader = new FileUpload('uploadfile'); 
// Handle the upload 
$result = $uploader->handleUpload($vendimagepath); 

if (!$result) { 
    exit(json_encode(array('success' => false, 'msg' => $uploader->getErrorMsg()))); 
} else { 
    echo json_encode(array('success' => true)); 
    $_SESSION['success']=true; 
    $path = $uploader->getFileName(); 
    $vendimagepath= $vendimagepath.$path; 
    $result = $db -> query("INSERT into vendimages (vendregid, vendimagepath)  VALUES ('$vendredig', '$path')"); 
    $result = $db -> update("UPDATE registervendors SET images='1' WHERE regid = '$vendredig' AND username='$vendusername' "); 
} 

私は、トップ$ X = 1でのif文の下に変数を挿入し、その後、$アップローダー=新しいファイルアップロードの下に、私はしばらくの間を追加しました$ x ++でループして、スクリプトの最後にその閉じ括弧を置くと、ファイルがアップロードされましたが、それらはすべて同じ番号(1)で終わります。ので、$ x = 1から再起動するたびに、したがって、$ X ++を使用すると、ページが読み込ま渡ってカウントするようにしたいので、あなたがあなたの$_SESSION

+0

@ file_exists()の代わりに[is_dir()](http://php.net/manual/en/function.is-dir.php)を使用しないでください。 – Peter

+3

@Peterおそらく、その名前のファイル(またはディレクトリ)が存在する場合、mkdirは失敗します。 'file_exists'はその両方を捕まえます。なぜなら、ディレクトリは単にファイルの一種であるからです。その名前で何かが既に存在する場合のエラー処理はより良いかもしれません。 – Paulpro

+0

OPでも、あなたのコードは注入攻撃に対しても脆弱です。文字列の補間や連結によるクエリの使用はまれな場合を除いて悪い考えですが、あなたが何をしているのか本当に分かっている場合のみです。代わりに、パラメータ化されたクエリを使用する必要があります。 '')という名前のファイルをアップロードするとどうなるか考えてみてください。 DROP TABLE registervendors; - '。 – Paulpro

答えて

2

使用する必要があるたびに1でアップロードが設定を開始する前に:。。

$_SESSION['upload_index'] = 1; 

次に、新しいアップロードファイルを取得するたびに$_SESSION['upload_index']++を実行します。

+1

....または最後にアップロードされたファイルを見つけ、それを1つずつ増やします。 – Peter

関連する問題