2016-04-25 62 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

文件輸入沒有公開文件的完整路徑,只是文件*名稱* - 這足以讓上傳過程起作用。 –

+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的等價物在symfony –

+0

也許這堆棧溢出url可以幫助你http://stackoverflow.com/questions/ 17951294/Symfony2的文件上傳一步一步 –

2

你正在做的這一切都錯了。 您必須創建一個表單對象並通過$ .ajax發送它。 而且我假設您已經編寫了正確的serverside代碼來保存圖像。

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

沒有我想通過ajax只有文件的full_path並上傳在我的控制器做派,因爲我有捲曲的工作上傳我的文件在Owncloud服務器 –