2016-03-29 2 views
0

ブラウズボタンとサブミットボタンを組み合わせてみました。ボタンをクリックすると、ファイルを選択できました。送信ボタンとブラウズボタンが1つのボタンに置​​き換えられたときにファイルをアップロードできません

しかし、ファイルが

をアップロードされません。これは、フォーム

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を開き、フォルダのアクセス許可とコンソールを確認します。 '' btwは有効な終了タグではないので、安全に削除できます。 –

+0

'button type =" button "id =" browse ">アップロード'フォームのデフォルトのボタンタイプが送信されています。また、デバッグ情報の '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-submit-form –

関連する問題