반응형
로컬 서버에 이미지 쓰기
최신 정보
받아 들여진 대답은 작년에 좋았지 만 오늘은 다른 사람들이 사용하는 패키지를 사용할 것입니다 : https://github.com/mikeal/request
실물
Google의 로고를 잡고 node.js를 사용하여 서버에 저장하려고합니다.
이것은 내가 지금 가지고 있으며 작동하지 않습니다.
var options = {
host: 'google.com',
port: 80,
path: '/images/logos/ps_logo2.png'
};
var request = http.get(options);
request.on('response', function (res) {
res.on('data', function (chunk) {
fs.writeFile(dir+'image.png', chunk, function (err) {
if (err) throw err;
console.log('It\'s saved!');
});
});
});
이 작업을 어떻게 할 수 있습니까?
여기에서 몇 가지 일이 발생합니다.
- fs / http가 필요하다고 가정하고 dir 변수를 설정합니다. :)
- google.com은 www.google.com으로 리디렉션하므로 이미지가 아닌 리디렉션 응답의 본문을 저장합니다.
- 응답이 스트리밍됩니다. 이는 '데이터'이벤트가 한 번이 아니라 여러 번 발생 함을 의미합니다. 전체 응답 본문을 얻으려면 모든 청크를 저장하고 결합해야합니다.
- 바이너리 데이터를 받고 있기 때문에 응답 및 writeFile에 따라 인코딩을 설정해야합니다 (기본값은 utf8).
이것은 작동합니다.
var http = require('http')
, fs = require('fs')
, options
options = {
host: 'www.google.com'
, port: 80
, path: '/images/logos/ps_logo2.png'
}
var request = http.get(options, function(res){
var imagedata = ''
res.setEncoding('binary')
res.on('data', function(chunk){
imagedata += chunk
})
res.on('end', function(){
fs.writeFile('logo.png', imagedata, 'binary', function(err){
if (err) throw err
console.log('File saved.')
})
})
})
이 스레드는 오래되었지만 https://github.com/mikeal/request 패키지로 동일한 작업을 수행하고 싶었습니다 .
여기에 작동 예
var fs = require('fs');
var request = require('request');
// Or with cookies
// var request = require('request').defaults({jar: true});
request.get({url: 'https://someurl/somefile.torrent', encoding: 'binary'}, function (err, response, body) {
fs.writeFile("/tmp/test.torrent", body, 'binary', function(err) {
if(err)
console.log(err);
else
console.log("The file was saved!");
});
});
리디렉션도 관리 할 수 있도록 http-request 를 사용하는 것이 좋습니다 .
var http = require('http-request');
var options = {url: 'http://localhost/foo.pdf'};
http.get(options, '/path/to/foo.pdf', function (error, result) {
if (error) {
console.error(error);
} else {
console.log('File downloaded at: ' + result.file);
}
});
이건 어때?
var http = require('http'),
fs = require('fs'),
options;
options = {
host: 'www.google.com' ,
port: 80,
path: '/images/logos/ps_logo2.png'
}
var request = http.get(options, function(res){
//var imagedata = ''
//res.setEncoding('binary')
var chunks = [];
res.on('data', function(chunk){
//imagedata += chunk
chunks.push(chunk)
})
res.on('end', function(){
//fs.writeFile('logo.png', imagedata, 'binary', function(err){
var buffer = Buffer.concat(chunks)
fs.writeFile('logo.png', buffer, function(err){
if (err) throw err
console.log('File saved.')
})
})
나는 사용하는 더 쉬운 해결책이 있습니다 fs.readFileSync(./my_local_image_path.jpg)
Azure Cognative Services의 Vision API 에서 이미지를 읽기위한 것입니다.
const subscriptionKey = 'your_azure_subscrition_key';
const uriBase = // **MUST change your location (mine is 'eastus')**
'https://eastus.api.cognitive.microsoft.com/vision/v2.0/analyze';
// Request parameters.
const params = {
'visualFeatures': 'Categories,Description,Adult,Faces',
'maxCandidates': '2',
'details': 'Celebrities,Landmarks',
'language': 'en'
};
const options = {
uri: uriBase,
qs: params,
body: fs.readFileSync(./my_local_image_path.jpg),
headers: {
'Content-Type': 'application/octet-stream',
'Ocp-Apim-Subscription-Key' : subscriptionKey
}
};
request.post(options, (error, response, body) => {
if (error) {
console.log('Error: ', error);
return;
}
let jsonString = JSON.stringify(JSON.parse(body), null, ' ');
body = JSON.parse(body);
if (body.code) // err
{
console.log("AZURE: " + body.message)
}
console.log('Response\n' + jsonString);
request를 사용하여 이미지를 로컬에 저장하는 가장 깨끗한 방법 :
const request = require('request');
request('http://link/to/your/image/file.png').pipe(fs.createWriteStream('fileName.png'))
헤더 에 인증 토큰 을 추가 해야하는 경우 다음을 수행하십시오.
const request = require('request');
request({
url: 'http://link/to/your/image/file.png',
headers: {
"X-Token-Auth": TOKEN,
}
}).pipe(fs.createWriteStream('filename.png'))
참고 URL : https://stackoverflow.com/questions/5294470/writing-image-to-local-server
반응형
'IT TIP' 카테고리의 다른 글
Datagridview에서 행을 선택하려면 마우스 오른쪽 버튼을 클릭하고 삭제할 메뉴를 표시합니다. (0) | 2020.12.06 |
---|---|
! = 및! ==와 같지 않은 PHP (0) | 2020.12.06 |
테이블 값 함수 실행 방법 (0) | 2020.12.06 |
std :: string 작업이 제대로 수행되지 않는 이유는 무엇입니까? (0) | 2020.12.06 |
Android 이미지보기 핀치 확대 / 축소 (0) | 2020.12.06 |