0

次の問題があります。入力フォームには、4 つの検証済みテキスト入力フィールド (空にすることはできません) と、同じフォームの下にある 3 つのファイル入力フィールドがあります。サイズが小さい画像をアップロードしようとすると、すべて正常に機能します。しかし、1MB 程度の大きな画像を選択すると、テキスト入力フィールドに入力したにもかかわらず、検証エラーが発生します。

$ime = mysql_real_escape_string($_POST['ime']);
$mesto = mysql_real_escape_string($_POST['mesto']);
$telefon = mysql_real_escape_string($_POST['telefon']);
$emajl = mysql_real_escape_string($_POST['emajl']);
$opis = mysql_real_escape_string($_POST['opis']);

if ((empty($ime)) || (empty($mesto)) || (empty($telefon)) || (empty($emajl))){echo "Moraju biti uneti podaci u obavezna polja"; exit;}
//unos slike1
if ((($_FILES["slika1"]["type"] == "image/gif")
|| ($_FILES["slika1"]["type"] == "image/jpeg")
|| ($_FILES["slika1"]["type"] == "image/jpg")
|| ($_FILES["slika1"]["type"] == "image/pjpeg")
|| ($_FILES["slika1"]["type"] == "image/x-png")
|| ($_FILES["slika1"]["type"] == "image/png"))
&& ($_FILES["slika1"]["size"] < 2097152))
{
if ($_FILES["slika1"]["error"] > 0)
 {
 echo "Greška: " . $_FILES["slika1"]["error"] . "<br>";
 }
else
 {
$razdvajanje = explode('.',$_FILES['slika1']['name']);
 $ekstenzija = $razdvajanje[1];
$novoime = mysql_real_escape_string($razdvajanje[0]).'_'.time();     
 $putanja = 'uploads/' . $novoime . "." . $ekstenzija;
move_uploaded_file($_FILES['slika1']['tmp_name'], $putanja);
 }
 }
 else
 {
 echo "Slika mora biti manja od 2MB i u adekvatnom formatu";

フィールドが空でなくても、「Moraju biti uneti podaci u obavezna polja」というエラーが表示されます。大きな画像を 1 つだけアップロードしようとすると、うまくいきます。1MB の画像を 3 つ同時にアップロードしようとすると、うまくいきません。

ただ明確にします。スクリプトは localhost (XAMPP) で動作しています。Web ホスティング サーバーにアップロードするときに問題が発生します。また、約 300kb の 3 つの画像ファイルをアップロードするとスクリプトは機能しますが、約 1MB のサイズのファイルを 3 つアップロードしようとすると、プロセスは約 60% で失敗します。問題はサイズではなく、アップロード時間だと思います。

4

4 に答える 4

0

画像サイズを 500kb に制限することで問題を解決しました。それは今動作します。つまり、問題を解決したのではなく、回避したのです。

于 2013-07-04T19:16:32.520 に答える
0

ファイルサイズを設定し、PHP によって設定されたデフォルトのサイズをオーバーライドする必要があります。

このようなもの:

$size1=$_FILES["uploaded_file"]["size"]/1024;
$max_allowed_file_size = 50000;

if($size1 >= 0)
{
    if($size1> $max_allowed_file_size )
    {
    $err[]= "\n Size of file should be less than $max_allowed_file_size";
    }
}

ファイルサイズでスクリプトを変更するだけで問題ありません。

于 2013-07-03T15:41:12.093 に答える
0

これを行う:

  • php.ini を検索します。(私のものは /etc/php5/apache2/php.ini の下にあります)
  • 「post_max_size」を 5M に編集
  • 「upload_max_filesize」を 5M に編集します
  • 「max_file_uploads」を 20 に編集します (<- この値は、1 回のリクエストでアップロードできるファイルの数を決定します)。

お役に立てれば。

于 2013-07-03T15:42:02.533 に答える