2016-06-10 8 views
0

Kann jemand bitte feststellen, was ich falsch mache? Ich kopierte dies von einer anderen Seite auf meiner Website, wo es funktioniert, aber ich kann es nicht dazu bringen, an diesem zu arbeiten. Es gibt auch Texteingaben, die ich weggelassen habe, die wie erwartet funktionieren. Vielen Dank.Formularbild einreichen nicht gefunden

<?php 
if (isset($_POST["save"])) { 

    if (isset($_POST['pic'])){ 
     //isset never detected when image is uploaded in html 
    } 

} 


<html> 
<form class="form-horizontal" onsubmit="return checkSize(2097152)" enctype="multipart/form-data" data-toggle="validator" method="POST" action="profile.php"> 
<input id="pic" name="pic" type="file" accept="image/*" class="text-center center-block well well-sm"> 

     <div class="form-group"> 
      <label class="col-md-3 control-label"></label> 
      <div class="col-md-8"> 
       <button class="btn btn-primary" name="save" id="save">Save Changes</button> 
       <a href="profile.php" class="btn btn-default" role="button">Cancel</a> 
      </div> 
     </div> 

</form> 
<script type="text/javascript"> 

//check image size func 
function checkSize(max_img_size) 
{ 
    var input = document.getElementById("pic"); 
    // check for browser support (may need to be modified) 
    if(input.files && input.files.length == 1) 
    {   
     if (input.files[0].size > max_img_size) 
     { 
      alert("Profile Picture must be less than " + (max_img_size/1024/1024) + "MB"); 
      return false; 
     } 
    } 

    return true; 
} 

Ergänzung: Ich habe gerade eine print_r ($ _ POST); print_r ($ _DATEIEN); und bekam ohne ein Bild hochgeladen:

Array ([Spitzname] => RaySirSharp [Motto] => Big Schluck eh? [email] => [email protected] [submit] =>) Array ([Bild] => Array ([name] => [Typ] => [tmp_name] => [Fehler] => 4 [size] => 0))

Mit einem Bild hochgeladen:

Array ([Spitznamen ] => raySirSharp [motto] => Große Schlucke eh? [email] => [email protected] [abschicken] =>) Array ([pic] => Array ([name] => 12472627_211490652554223_5803523050459466916_n.jpg [type] = > image/jpeg [tmp_name] =>/tmp/phpvNCBzj [Fehler] => 0 [Größe] => 70254))

Was kann ich verwenden, um zu erkennen, ob ein Bild hochgeladen wurde oder nicht?

Ich habe versucht:

if (isset($_FILES['pic'])){ //always true :(} 
+1

Was ist das checkSize() Funktion in onsubmit? –

+0

Hey @Ryan fügen Sie bitte Java Script-Funktionscodes zu Ihrer Antwort hinzu –

+0

Ist Ihr PHP-Tag geschlossen? Datei wird als PHP-Datei gespeichert? Js Quellen? –

Antwort

1

Gelöst:

if (!empty($_FILES["pic"]["name"])){ } 

Works! :)

1

leer statt isset

if (!empty($_POST['pic'])){ 

} 

ich es hoffe, Ihr Problem zu lösen

eine weitere Sache, die ich anycode für die Einreichung von Formular finden didnt so ohne einreichen Sie können die POST-Variablen nicht auf der nächsten Seite abrufen.

1

Um eine Datei von einem HTML-Formular zu akzeptieren, müssen Sie die $ _FILES anstelle von $ _POST verwenden. Zum Beispiel können Sie $_FILES["pic"]["name"] verwenden, um den Dateinamen zu erhalten.

Von dort können Sie das Bild an eine neue Position wie folgt bewegen:
move_uploaded_file($_FILES["pic"]["tmp_name"], "/var/tmp/pic.jpg")

Weitere Informationen finden Sie unter http://www.w3schools.com/php/php_file_upload.asp

+0

Dies hat den Trick gerade geändert, um den POST zu (iset ($ _ FILES ["pic"])). Außer jetzt erkennt es immer etwas als gesendet, auch wenn die Eingabe leer ist. –

0

Fügen Sie type='submit' in Ihrer Taste.

<button type='submit' class="btn btn-primary" name="save" id="save"> 
    Save Changes 
</button> 

Um der <form> Ihr Eingabetyp submit sein muss einreichen.

Die Schaltfläche HTML-Senden wird zum Senden von Formulardaten an das im ACTION-Attribut angegebene Skript verwendet. Solange SUBMIT eine Aktion hat, werden Ihre Daten irgendwo gesendet. Aber das NAME-Attribut der Submit-Buttons ist sehr praktisch. Sie können diesen Namen verwenden, um zu testen, ob das Formular wirklich gesendet wurde oder ob der Benutzer einfach auf die Schaltfläche zum Aktualisieren geklickt hat. Dies ist wichtig, wenn sich das PHP-Skript auf derselben Seite wie das HTML-Formular befindet.

Für mehr Informationen, bitte Click Here oder PHP and the Submit Button of HTML Forms

+0

Ich denke du bist vielleicht auf etwas, weil die Seite, die ich schon habe, eine ähnliche Form wie diese auf einer eigenen Seite hat, aber ich habe versucht typ = submit anzugeben und nichts hat sich geändert. –

+0

So weit mein Verständnis ist, '

' wird nicht ohne 'type = 'submit'' eingereicht, es sei denn die Einreichung wird durch' AJAX' @RyanClaxton behandelt –

0

versuchen

print_r($_POST); 

Ergebnisse zu sehen, vielleicht, wenn nichts Rückkehr ist das Problem von onsubmit ...

checkSize() Trigger ist
0

Hallo, Sie haben Ihre phptag vor html Start nicht geschlossen. Und versuchen Sie zu drucken $_FILES Sie Ihre image alle Informationen bekommen

<?php 
if (isset($_POST["save"])) { 
// echo "<pre>";print_r($_FILES['pic']); 
//then to upload use this 
$file_name = $_FILES['pic']['name']; 
$file_tmp =$_FILES['pic']['tmp_name'];  
move_uploaded_file($file_tmp,"images/".$file_name); 
    } 
    ?> 
1

@ Ryan Sie verwenden $ _POST, während die Eingabetyp Datei ist
Versuchen Sie es mit $_FILES['pic'] statt $ _POST

0

Ich denke, das ist die Ursache, schlage ich vor, dass Sie den Typ "Senden" für das Absenden des Formulars verwenden. Bitte entfernen Sie dieses <button class="btn btn-primary" name="save" id="save">Save Changes</button> mit diesem <input type='submit' class="btn btn-primary" name="save" id="save">. Sag mir, wenn es tut