2012-02-06 41 views
5

Tôi đang nhận dữ liệu từ yêu cầu nhận. Các dữ liệu (trong cơ thể của phản ứng) trông giống như sau:nodejs ghi dữ liệu hình ảnh thô vào tệp jpeg?

... ÿÀ���"�ÿÄ��������������ÿÄ�N��!1"AQa2q¡#BR±ð3brS²ÁÂÑá$ñCDTst¢³&45dÃÒÿÄ������������ÿÄ�-������!1A"Qa¡ðq±ÁÑ2áÿÚ���?�û." """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """R1º#ª¥7Jíî½M6îNö ]·!]=Fv­ß`7~qÆee²%·JokkZüCbìþ<ù{ã9öùË®´(%A,Ià�2I?t×bn6wÆù¥V 2SÀ><k5ºÙØ92EhÎçü¨/aÝ!ã|ñþ¥ñßT}U«¦ÒÚµ«xuÕfƳ KØ {ù{ð$·DúBMZÆcp}´R|Mä2ó8üg)·ùôfõ$zXiRÞü}óÆ>,êÚûíR5ý:\ ..... 

tiêu đề phản ứng giống như thế này:

HTTP/1.1 200 OK 
Content-Length: 26965 
Access-Control-Allow-Origin: * 
Content-Type: image/jpeg; charset=UTF-8 
Date: Mon, 06 Feb 2012 21:14:21 GMT 
Expires: Mon, 06 Feb 2012 22:14:21 GMT 
Cache-Control: public, max-age=3600 
Last-Modified: Fri, 13 Feb 2009 23:31:30 GMT 
X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Server: Dropta Server 1.0 
X-Frame-Options: SAMEORIGIN 
Connection: close 

Tôi muốn để có được những nội dung cơ thể đó là dữ liệu hình ảnh của tôi và tiết kiệm nó vào một tập tin name.jpeg trên máy chủ.

Tôi có thể làm như thế nào? Tôi đã thử sử dụng bộ đệm kết hợp với mô-đun fs, nhưng tôi là loại bị mất.

Cảm ơn

Trả lời

13

Dưới đây là một ví dụ, mà tải http://upload.wikimedia.org/wikipedia/commons/1/15/Jagdschloss_Granitz_4.jpg để name.jpeg

var fs=require('fs'); 
var http=require('http'); 

var f=fs.createWriteStream('name.jpeg'); 

var options={ 
    host:'upload.wikimedia.org', 
    port:80, 
    path:'/wikipedia/commons/1/15/Jagdschloss_Granitz_4.jpg' 
} 

http.get(options,function(res){ 
    res.on('data', function (chunk) { 
     f.write(chunk); 
    }); 
    res.on('end',function(){ 
     f.end(); 
    }); 
}); 
+1

đừng bận tâm. CNTT HOẠT ĐỘNG. Cảm ơn. – zumzum

+0

Được rồi, bạn được chào đón – stewe

+0

Vì vậy, tôi có thể mở nhiều luồng cùng lúc không? Tôi muốn viết nhiều hình ảnh vào đĩa cùng một lúc, nhưng khi tôi cố gắng để đưa nó vào một vòng lặp nó đã đi một chút điên rồ và bị rơi. Vì vậy, nếu tôi làm một hình ảnh tại thời điểm nó hoạt động. Tôi có thể chạy nhiều luồng cùng một lúc không? – zumzum

7

Một phiên bản hơi ngắn hơn, trong đó sử dụng Stream.pipe:

var http = require('http'), 
    fs = require('fs'), 
    imgSource = 'http://upload.wikimedia.org/wikipedia/commons/1/15/Jagdschloss_Granitz_4.jpg'; 

http.get(imgSource, function(res) { 
    res.pipe(fs.createWriteStream('wiki.jpg')); 
}); 
+2

cho tôi đây là câu trả lời tốt hơn so với cái được chấp nhận – Alexey

Các vấn đề liên quan