Bu php çalışmıyor, neden ben ... tanımsız bir dizin olsun?

3 Cevap php

Ben sunucuya bir resim yüklemek için çalışıyorum.

I hava a form with a couple of inputs... INSIDE this form, I have an Iframe which contains another form for the upload, this because I dont want the original form to submit().

Temelde özgün form:

      <form> ...... bla bla bla alot of inputs....<iframe src="pic_upload.html"></iframe></form>

İşte pic_upload.html olduğunu:

      </head>
      <body><form name="pic_form" id="pic_form" action="bincgi/imageUpload.php" method="post" target="pic_target"><input name="pic_file" type="file" id="pic_file" size="35" onchange="this.form.submit();"></form><div id="pic_target" name="pic_target" style="width:80px; height:80px;"></div></body>
      </html>

İşte imageUpload.php olduğunu:

      <?php
      $destination_path = getcwd().DIRECTORY_SEPARATOR;
      //echo $destination_path;
      $result = 0;
      $target_path = $destination_path . basename($_FILES['pic_file']['name']);
      if(@move_uploaded_file($_FILES['pic_file']['tmp_name'], $target_path)) {
      $result = 1;
      }
      ?>

Ben bu hatayı alıyorum: Undefined index: imageUpload.php line 5, pic_file

Ben bu işe alırsanız AYRICA, formun hedef içinde yüklenen görüntüyü görüntülemek için iyi bir yolu var mı?

Thanks alot! PS: I will add javascript to the tags because maybe thats what I need here!

3 Cevap

Form özniteliği hakkında unutmayın

enctype="multipart/form-data"

Form böyle olması gerekiyor

<form enctype="multipart/form-data" action="__URL__" method="POST">

this PHP.net documentation daha fazla bilgi için check out.

Önce $_FILES tuşu ile bir öğe olup olmadığını test etmek gerekir pic_file. Peki bunu yapmak için isset işlevini kullanın:

$destination_path = getcwd().DIRECTORY_SEPARATOR;
//echo $destination_path;
$result = 0;
if (isset($_FILES['pic_file'])) {
    $target_path = $destination_path . basename($_FILES['pic_file']['name']);
    if (@move_uploaded_file($_FILES['pic_file']['tmp_name'], $target_path)) {
        $result = 1;
    }
}