2014-07-04 58 views
0

我正在使用angularjs上傳文件。我使用這個模型,我發現在github: https://github.com/danialfarid/angular-file-upload將上傳的文件內容返回爲JSON

上傳工程完美。但是,在我上傳文件後,我想將文件內容作爲JSON返回,然後使用Angular迭代JSON對象。但我不知道該怎麼做。

這裏是我的代碼:

$filename = $_FILES['file']['tmp_name']; 
$csv = array_map('str_getcsv', file($filename)); 
foreach($csv as $c) 
{ 
    echo str_replace(array('"', ';'), ' ', $c[0]) . "\n"; 
} 
    //Return as JSON here? HOW? 

這裏是我的控制器:

as.controller('Marketing', function($scope, $http, $upload) 
{ 
    $scope.onFileSelect = function($files) { 
     var file = $files[0]; 
     if (file.type.indexOf('image') == -1) { 
      $scope.error = 'image extension not allowed, please choose a JPEG or PNG file.'    
     } 
     if (file.size > 2097152){ 
      $scope.error ='File size cannot exceed 2 MB'; 
     }  
     $scope.upload = $upload.upload({ 
      url: 'partials/result.php', 
      data: {}, 
      file: file, 
     }).success(function(data, status, headers, config) { 
      // file is uploaded successfully 
      console.log(data); 
      $scope.result = data; 
     }); 
    } 
}); 

我想要的數據是和JSON對象。我怎樣才能做到這一點?當我用PHP嘗試json_encode時,它不起作用。

任何人都可以幫助我?

+0

你有你向服務器發送CSV數據的例子嗎?它有結構嗎? –

+0

選中此[如何從服務器檢索JSON數據](http://stackoverflow.com/questions/24468459/sending-a-json-to-server-and-retrieving-a-json-in-return-without-jquery/24468752#24468752) – hex494D49

+0

@ hex494D49:我不明白。 – user500468

回答

0

我相信這是你在找什麼

if(isset($_FILES["file"])){ 
    $fname = $_FILES['file']['tmp_name']; 
    // ... 
    if(move_uploaded_file($fname, "uploads/" . $fname)){ 

     // this way 
     $csv = file_get_contents($fname); 
     $array = array_map("str_getcsv", explode("\n", $csv)); 
     echo json_encode($array); 

     // or this way; have in mind delimiter 
     $row = str_getcsv($csv, "\n"); 
     $length = count($row); 
     for($i = 0; $i < $length; $i++){ 
      $data = str_getcsv($row[$i], ";"); 
      $array[] = $data; 
     } 
     echo json_encode($array); 
    } 
    // ... 
} 
+0

當我檢查firebug中的響應時,我看不到返回的數據是在JSON中?這將返回:http://pastebin.com/KHPmD97r,你可以看到,它不是典型的json格式。它是否與請求有關,應該是GET請求而不是POST? – user500468

+0

@ user500468我剛剛在Excel中創建了一個CSV文件,並對其進行了檢查,結果正常。你可以發佈你的CSV文件的片段,我會再次檢查。我會嘗試你已經上傳的這些數據。 – hex494D49

+0

這是CSV文件的一個片段:http://pastebin.com/LfLEqpZw – user500468