2015-07-01 30 views
1

我有以下表單。正在提交PHP輸入類型文件字段,文件不是

<form action="picture.php" method="POST" class="pic_form"> 
<span class="picture_box"> 
<input type="file" accept="image/*" name="pic_upload" class="picture_upload_input" /> 
<p class="upload_info">Only file types of the extensions gif, jpg, png and svg are allowed. The maximum file size is 15mb. If your file is larger than 15mb, it will not upload.</p> 
</span> 
<input type="hidden" name="uid" value="<?php echo $_SESSION['userid']; ?>" /> 
<input type="button" name="upload_button" value="Upload" class="upload_button" /> 
</form> 

我驗證該文件是否已設置,並且它是使用jQuery的正確類型和大小。當我提交此表單時(使用jQuery),該字段已發佈

$_POST['pic_upload'] 

這會返回true。

但是,文件本身並沒有公佈

$_FILES['custom_pic_upload'] 

這將返回false和

var_dump($_FILES['custom_pic_upload']); 

返回null。

如何讓文件本身上傳?

回答

1

您的表單需要屬性enctype,https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form

multipart/form-data:用於type屬性設置爲「file」的元素的值。

<form action="picture.php" method="POST" class="pic_form" enctype="multipart/form-data"> 
<span class="picture_box"> 
<input type="file" accept="image/*" name="pic_upload" class="picture_upload_input" /> 
<p class="upload_info">Only file types of the extensions gif, jpg, png and svg are allowed. The maximum file size is 15mb. If your file is larger than 15mb, it will not upload.</p> 
</span> 
<input type="hidden" name="uid" value="<?php echo $_SESSION['userid']; ?>" /> 
<input type="submit" name="upload_button" value="Upload" class="upload_button" /> 
</form> 
<script type='text/javascript'> 
$('.upload_button').click(function(){ 
    var upload_ver_val = $('.picture_upload_input').val(); 
    if (upload_ver_val == '') { 
     alert("Please upload an image!"); 
     return false; 
    } else { 
     var ext = $('.picture_upload_input').val().split('.').pop().toLowerCase(); 
     if($.inArray(ext, ['gif','png','jpg','jpeg','svg']) == -1) { 
      alert('Only file types of the extensions; gif, jpg, png and svg are allowed!'); 
      return false; 
     } else { 
      $('.prof_pic_form').submit(); 
     } 
    } 
}); 
</script> 

的話題和教程其他線程。

What does enctype='multipart/form-data' mean?
http://www.tizag.com/phpT/fileupload.php

另外,PHP值的名稱將是name屬性,而不是class,因此尋找它pic_upload

+0

好的,我沒有這個問題了,但現在,顯然如果(isset($ _ POST ['pic_upload']))返回false – user4559334

+1

是否提交了其他POST值? '的print_r($ _ POST);'。 – chris85

+0

nope。沒有提交任何變數 – user4559334