2016-03-29 29 views
0

我試圖將瀏覽按鈕和提交按鈕組合在一起。當單擊按鈕時,Iam能夠選擇文件。當提交按鈕和瀏覽按鈕被替換爲單個按鈕時無法上傳文件

但該文件沒有得到上傳

這是形式

HTML:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"])?>" method="post" id="myform" enctype="multipart/form-data"> 
    <input type="file" name="upload" id="upload" style="display:none"> 
    <button id="browse">Upload</button> 
</form> 

JQuery的

$(document).ready(function(){ 
     $("#upload").change(function(){ 
       $("#myform").submit(); 
     }); 
     $("#browse").click(function(){ 
     $("#upload").click(); 
     }); 

    }); 

然後我提交的數據

PHP:

if($_SERVER["REQUEST_METHOD"]=="POST") 
{ 

    $file=$_FILES["upload"]["name"]; 
    $folder='uploads/'; 
    $err=$_FILES["upload"]["error"]; 
    $target=$folder.$file; 
    $temp=$_FILES["upload"]["tmp_name"]; 
    echo $err; 
    move_uploaded_file($temp, $target); 
} 

我得到的輸出4。這意味着沒有文件上傳。我可以如何解決這個問題?

+0

http://php.net/manual/en/function.error-reporting.php並檢查文件夾權限和控制檯。 ''順便說一句,不是一個有效的結束標記,所以你可以放心地擺脫它。 –

+0

將'type =「button」'添加到瀏覽按鈕,否則它會觸發提交事件:''提交表單中的默認按鈕類型。此外,嘗試'print_r($ _ FILES)'和'print_r($ _ POST)'調試信息 –

+0

謝謝,它的工作 –

回答

0

有一個簡單的方法來實現這一點。

  • ,因爲並不是所有的Web瀏覽器中使用「提交」爲默認按鈕類型添加類型=「提交」按鈕
  • 添加一個表單事件偵聽器觸發時,「提交」事件引發

示例代碼:

$(document).ready(function(){ 
 
    
 
    $('#myform').submit(function(e) { 
 
    
 
    // Remove following two lines in order to perform the submission 
 
    // I added the two lines in order to avoid the real submission (Test purposes) 
 
    e.preventDefault(); 
 
    alert('Submitted!') 
 
    
 
    }) 
 
    
 
    $("#upload").change(function(){ 
 
    $("#myform").submit(); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form action="example.html" method="post" id="myform" enctype="multipart/form-data"> 
 
    <input type="file" name="upload" id="upload"> 
 
    <button id="browse">Upload</button> 
 
</form>

請記住刪除我包含的「preventDefault」和「alert」行,以便執行代碼段而不用將您重定向到另一個頁面。

+0

您也可以使用AJAX請求提交表單:http://stackoverflow.com/questions/1960240/ jQuery的Ajax的提交形式 –