2016-11-07 11 views
-2

は私のコードです:アップロードする.txtファイルフォームを作成するにはどうすればよいですか?ここ

HTML:

<form id="form_id" action="#" accept-charset="UTF-8" enctype="multipart/form-data"> 
    <div> 
     <label for="files" class="drop-files-container">drag here</label> 
     <input id="files" type="file" name="file[]" style="visibility:hidden;"> 
    </div> 
</form> 

はJavaScript:

$('#files').on('change',function() { 
    var files = $(this)[0].files; 
    processFileUpload(files); 
    return false; 
}); 

function processFileUpload(droppedFiles) { 
    var uploadFormData = new FormData($("#form_id")[0]); 
    if(droppedFiles.length > 0) { 
     for(var f = 0; f < droppedFiles.length; f++) { 
      uploadFormData.append("file",droppedFiles[f]); 
     } 
    } 
    $.ajax({ 
     url : "compareList.php", 
     type : "POST", 
     data : uploadFormData, 
     contentType: "application/x-www-form-urlencoded;charset=utf-8", 
     cache : false, 
     contentType : false, 
     processData : false, 
     dataType : "json", 
     success : function(data) { 
      console.log(data); 
     } 
    }); 
} 

PHP:

$arr = array(); 
$file = $_FILES['file']; 
$handle = fopen($file, "r"); 

header('HTTP/1.1 500 Internal Server Booboo'); 
header('Content-Type: application/json; charset=UTF-8'); 
die(json_encode(array('message' => 'ERROR', 'code' => 1337))); 

そして、私のコードは、この返します。

警告:のfopen()は、パラメータ1がCに与えられた有効なパス、配列であることを期待:\ xamppの\ htdocsに\ comparelist_php \ compareList.phpラインに6
{ "メッセージ": "ERROR"、 "コード":1337}

どのように私はそれを修正することができますか?

+0

は、HTMLマークアップではない私たちに配列表記を行います: '名前は=' "[]ファイル"。これは、サーバー側の$ _FILESスーパーグローバル変数の中に配列を作成します。これはあなたが望むものではありません。 – arkascha

+2

また、 ''であっても '$ _FILES ['file']'はまだ配列になりますので、 '$ _FILES ['file'] ['tmp_name' ] '。 – roberto06

+0

@arkascha OPは最初のものだけを選択するので問題はありません。 ( '$(this)[0] .files') –

答えて

1

$_FILES['file']は配列であるため、$_FILES['file']['tmp_name']を使用する必要があります。

PHP documentationから撮影:

グローバル$_FILESがすべてアップロードされたファイルの情報が含まれています。 サンプルフォームの内容は次のとおりです。この は、上の サンプルスクリプトで使用されているように、ファイルアップロード名userfileの使用を前提としています。これには任意の名前を使用できます。

$_FILES['userfile']['name']

  • クライアント・マシン上のファイルの元の名前。ブラウザがこの情報を提供した場合

$_FILES['userfile']['type']

  • ファイルのMIMEタイプ
  • 、。例として「image/gif」があります。しかし、このMIMEタイプはPHP側ではチェックされておらず、したがって、その値を当然のものと見なしません。アップロードされたファイルのバイト単位の

$_FILES['userfile']['size']

  • サイズ
  • 、、。

$_FILES['userfile']['tmp_name']

  • アップロードされたファイルがサーバー上に格納されていたファイルのテンポラリファイル名。

$_FILES['userfile']['error']

  • このファイルアップロードに関連付けられたエラーコード。
+0

素晴らしい..ありがとう – stack

関連する問題