2012-12-15 7 views
5

Tôi có thể lấy dữ liệu thô của tệp mà tôi yêu cầu, nhưng tôi không thể khiến trình duyệt phân phát tệp cho người dùng. Tôi có cần sử dụng iframe không?Tải xuống để hoạt động giữa các angularj và express.js

//Client code 
    download_file: function (path, callback) { 
     $http.post('/download/client_file', {path:path}). 
      success(function(data, status, headers, config) { 
       console.log(data); //this contains the raw data of the res.download 
            //from the server. 
      }); 
    } 

    //server code 
    res.download(file); // the path is proper 
+0

Ứng dụng có hoạt động tốt hơn nếu bạn thực hiện HTTP GET không? (hay còn gọi là mô phỏng điều gì sẽ xảy ra nếu người dùng nhấp vào một liên kết đến tập tin) –

+0

Nó không quan trọng nếu tôi sử dụng GET hoặc POST tôi không có đối tượng dữ liệu biểu mẫu thích hợp. –

Trả lời

2

Tôi đã sử dụng mã bên dưới trong tệp dịch vụ của tôi để tải xuống các mục và nó hoạt động tốt. Tôi đã nhận nó từ http://filamentgroup.com/lab/jquery_plugin_for_requesting_ajax_like_file_downloads/

$('<form action="'+ url +'" method="'+ ('post') +'">'+inputs+'</form>') 
       .appendTo('body').submit().remove(); 
+1

Tôi sẽ +2 nếu tôi có thể. Giải pháp tuyệt vời. Một điều cần làm rõ trong câu trả lời này là 'đầu vào' có thể trông giống như sau:' 'trong đó' mydata' là một số đối tượng từ '$ scope' của bạn. Xem ví dụ đầy đủ của tôi trên blog của tôi: http://jessemon.blogspot.com/2013/11/download-data-from-angular-nggrid-as-csv.html – Jess

+0

Tôi đang gặp vấn đề tương tự - Tôi có một bộ điều khiển đang thực hiện $ http.put() cho app.js. chính của tôi Các phản ứng dữ liệu tôi nhận được cũng là sản lượng thô của tập tin .csv của tôi và thay thế mà với ở trên là không cho tôi 'Lỗi tham khảo: $ không được định nghĩa' là có cái gì tôi đang mất tích? – MonsterWimp757

+1

@ MonsterWimp757 Nếu bạn muốn sử dụng $ check nếu bạn đã tải jquery trước angular tại index.html – Eric

0

Tùy thuộc vào loại tập tin, và làm thế nào các tiêu đề được đặt trên nó, bạn có thể tìm thấy nó dễ dàng hơn để bao la chỉ cần gọi location.href="uriString"; từ JS của bạn. Tập tin cần tải xuống ngay lập tức, sử dụng cửa sổ bạn đang ở. Nếu đó là JSON hoặc dữ liệu văn bản, bạn có thể cần phải tinh chỉnh tiêu đề để làm cho nó tải xuống thay vì hiển thị nội tuyến ... ("nội dung: bố cục: tệp đính kèm"). ..)