0

multiple_upload.php

以下のコードは multiple_upload.php で、アップロード用の 2 つのボタンと送信ボタンがあります。それの実際の写真:

<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form action="multiple_upload_ac.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td><strong>multiple Files Upload </strong></td>
</tr>
<tr>
<td>Select file 
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>
<tr>
<td>Select file
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>
<tr>
<td align="center"><input type="submit" name="Submit" value="Upload" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>

ここに画像の説明を入力

multiple_upload_ac.php

このコードは、このコード行に入力したファイルを処理し<input name="ufile[]" type="file" id="ufile[]" size="50" />、アップロード フォルダー内に保存します。

<?php

//set where you want to store files
//in this example we keep file in folder upload 
//$HTTP_POST_FILES['ufile']['name']; = upload file name
//for example upload file name cartoon.gif . $path will be upload/cartoon.gif

$path1= "upload/".$HTTP_POST_FILES['ufile']['name'][0];
$path2= "upload/".$HTTP_POST_FILES['ufile']['name'][1];


//copy file to where you want to store file
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);
copy($HTTP_POST_FILES['ufile']['tmp_name'][1], $path2);

// Use this code to display the error or success.

$filesize1=$HTTP_POST_FILES['ufile']['size'][0];
$filesize2=$HTTP_POST_FILES['ufile']['size'][1];


if($filesize1 || $filesize2!= 0) 
{
echo "We have recieved your files";
}
else {
echo "ERROR.....";
}

// What files that have a problem? (if found)

if($filesize1==0) {
echo "There're something error in your first file";
echo "<BR />";
}

if($filesize2==0) {
echo "There're something error in your second file";
echo "<BR />";
}
?>

ここに私の質問があります: たとえば、可能であれば、私は samplefile.ppt をアップロードし、他のユーザーは同じファイル名とファイル タイプ (samplefile.ppt) をアップロードします。既存のファイルがあったため、ppt または samplefile_1.ppt になり、他のユーザーが再度アップロードすると、そのファイルは samplefile(2).ppt または samplefile_2.ppt になります。ありがとうございました

4

2 に答える 2

3

file_existsを使用して、ファイルをコピーする前にファイルが既に存在するかどうかを確認します。

存在する場合は、ファイル名を必要なものに変更します。また、これらすべてをループで実行することをお勧めします。同じことを繰り返さないでください

次のように:

if( file_exists($path1) ) {
    // change another filename to overwrite $path1
}

申し訳ありませんが、ファイルがカウントされていてもファイルが存在するかどうかを確認するのを忘れていました。そのため、単純な if 以外に、より複雑な作業を行う必要があります。編集されたコードは次のとおりです。

for( $i = 0; isset($HTTP_POST_FILES['ufile']['name'][$i]); $i++ ) {
    /*
     * do things before copy
     */
    $path = 'upload/'.$HTTP_POST_FILES['ufile']['name'][$i];
    $lastDot = strrpos($path, '.');
    $base = substr($file, 0, $lastDot);
    $ext = substr($file, $lastDot);
    // this loop will keep doing until find a path that no file exists
    for( $seq = 0; file_exists($path); $seq++ ) {
        if( file_exists($path) ) {
            $path = $base . '_'. $seq. $ext;
        }
    }
    /*
     *  do copy and something else
     */
}
于 2012-10-30T08:38:20.093 に答える
1

file_exists()コピーする前pathinfo()にファイル情報を確認するために使用できます。たとえば、次のようになります。

$file = $HTTP_POST_FILES['ufile']['tmp_name'][0];
$path_info = pathinfo($file);
$count = 0;

while(file_exists($file) {
    $count ++;
    $file = $path_info['dirname'] . $path_info['filename'] '_' . $count . '.' $path_info['extension'];
}

copy($file, $path) ;
于 2012-10-30T08:55:52.000 に答える