2016-04-25 17 views
0

ファイルパスを取得しようとすると、次のような結果が表示されます。 "C:\ fakepath \ amine.jpeg"この問題の結果としてサーバーのアップロードが機能していません。偽のパスJavascriptの問題

$('input[type=file]').change(function() { 
       var filePath=$('#file-input').val(); 


     $.ajax({ 
       url : "{{path('upload_file')}}", 
       type : 'POST', 
       data: { 
        filePath : filePath, 
        method: 'post', 
        params: { 
         action: "uploadFile" 
        } 
       }, 
       success : function(data, textStatus, jqXHR) { 

       alert(data); 


       } 
      }); 

      }); 
+0

"fakepath"という文字列を文字通り挿入していますか?それは別のフォルダ名を持つべきか、それともそこに存在しないべきですか? – BSMP

+2

ファイル入力はファイルのフルパスを表示せず、ファイル* name *のみを表示します。これはアップロードプロセスが動作するのに十分です。 –

+1

これは、ajax経由でファイルをアップロードする正しい方法のようには見えません。 – apokryfos

答えて

-1

ファイルは、デフォルトで一時フォルダにアップロードされます。あなたは、PHPのように、それへのアクセスを得るために、実際の場所に移動する必要があります。

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file) 

参考のため、http://www.w3schools.com/php/php_file_upload.asp

+0

私はSymfony 2の下で作業しています。ファイルをアップロードしたいサーバーはOwncloudです –

+0

Samar Rizvi $ FILESのequivaleceは何ですかsymfonyで –

+0

おそらくこのスタックオーバーフローURLがあなたを助けるかもしれませんhttp://stackoverflow.com/questions/ 17951294/symfony2-file-upload-step-by-step –

2

あなたはすべて間違ってこれをやっている参照してください。 フォームオブジェクトを作成し、$ .ajax経由で送信する必要があります。 そして、画像を保存するために正しいサーバーサイドコードを書いたと仮定します。

var f = new FormData(); 
    f.append('img',document.getElementById("file-input").files[0]); 

    var url= "{{Your URL}}"; 
    $.ajax({ 
     url: url, 
     type:"post", 
     data: f, 
     dataType:"JSON", 
     processData: false, 
     contentType: false, 
     success: function (data, status) 
     { 
      console.log(data); 
     }, 
     error: function (data) 
     { 

      if (data.status === 422) { 

       console.log("upload failed"); 


      } else { 
       console.log("upload success"); 

       } 

    }); 
+0

いいえ、私はファイルのfull_pathだけを送信したいと思います。アップロードは私のコントローラで行われます。私は自分のファイルをOwncloudサーバ –