2

私はphpのようにファイルをアップロードする機能を持っています:

function upload_file($folder,$name)
{
$dest = "../product/". $folder."/". $name;
$src       = $_FILES['image']['tmp_name'];
if (move_uploaded_file($src, $dest)) {
    } else {
        echo "<script> alert('" . $src . "');
            window.history.go(-1); </script>\n";
        exit();
    }
}

関数を1回だけ呼び出すと、正常upload_file('small','abc.jpg')に動作しますが、次のように2回呼び出します。

upload_file('small','abc.jpg')
upload_file('big','abc.jpg')

2番目のフォルダー「big」では機能しません

そのための解決策はありますか?

4

1 に答える 1

1

move_uploaded_file最初の目的地に移動しました。したがって、解決策は、最初の宛先パスを取得し、それをコピーして他のパスにコピーすることです。

それは多くの解決策になります。そのうちの 1 つは、param を配列に変更して反復します。

<?php
$filesDes = array(
           array('folder'=>'small','name'=>'abc.jpg'),
           array('folder'=>'big','name'=>'abc.jpg'));

function upload_file($arrayfile)
{
    $firstfile = null;
    foreach($arrayfile as $val)
    {
        $dest = "../product/". $val['folder']."/". $val['name'];
        if(!isset($firstfile))
        {
            $firstfile = $dest;
            $src       = $_FILES['image']['tmp_name'];
            if (!move_uploaded_file($src, $dest)) {
               echo "<script> alert('" . $src . "');
               window.history.go(-1); </script>\n";
               exit();
            }
        }
    }
    else
    {
        if(!copy ( $firstfile , $dest ))
        {
           echo "<script> alert('" . $dest . "');
           window.history.go(-1); </script>\n";
           exit();
        }
    }
}
upload_file($filesDes)
于 2012-05-23T04:32:49.810 に答える