2016-04-25 142 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服务器 –