저는 JS를 처음 접했고 COCO-SSD JS를 사용하는 Discord.js를 사용하는 Discord 봇에서 작업하고 있으며 내 PC에서 파일을 읽고 쓸 필요가 있습니다.
이것이 최선의 아이디어가 아닐 수도 있지만, 도착하면 그 다리를 건너겠습니다.
지금 당장은 내 PC에서 이미지를 읽고 쓰는 방법이 필요합니다.
참고 : 파일은 URL에서 내 컴퓨터로 작성되어야합니다. 그러나 내 PC에서 이미지를 다운 리드해야하는 것을 피할 수있는 방법이 있다면 도움을 주시면 감사하겠습니다.
"fs", "https"및 "fetch"를 사용하고 있습니다.
내 방법의 문제는 이미지에서 수신하는 픽셀이 NULL 이므로 많은 작업 을 할 수 없다는 것입니다.
내 현재 코드는 다음과 같습니다.
끔찍한 형식에 대해 죄송합니다. 영어는 제 모국어가 아니며 오전 2시입니다.
const fetchUrl = require("fetch").fetchUrl;
const https = require('https');
function saveImageToDisk(url,path)
{
var fullUrl = url;
var localPath = fs.createWriteStream(path);
var request = https.get(fullUrl,function(response) { console.log(response)
response.pipe(localPath)
});
}
saveImageToDisk("https://post.greatist.com/wp-content/uploads/sites/3/2020/02/322868_1100-1100x628.jpg","./images/" + Date.now + ".png");
const img = fs.readFile("./images/" + Date.now + ".png", function(response){console.log(response)});
나는 module을 사용하여 이와 같은 것을 달성하는 방법을 알고 node-fetch
있으므로 아래 예제를 제공 할 것입니다. 나는 당신의 불화 봇 에서이 기능이 정확히 필요한지 모르겠지만 아래 코드는 이미지 URL을 지정된 경로에 올바르게 저장할 수 있습니다.
const fetch = require("node-fetch");
const fs = require("fs");
function saveImageToDisk(url, path)
{
fetch(url)
.then(res => res.buffer())
.then(buffer => fs.writeFileSync(path, buffer));
}
위의 예제 코드를 테스트했으며 완벽하게 작동합니다. 나머지 코드에 대해서는 몇 가지 수정 사항이 있습니다.
const filepath = "./images/" + Date.now() + ".png";
const imageurl = "https://post.greatist.com/wp-content/uploads/sites/3/2020/02/322868_1100-1100x628.jpg";
saveImageToDisk(imageurl, filepath);
const img = fs.readFile(filepath, (err, response) =>{
if (err) throw err;
console.log(response);
});
특히 주요 문제는 다음과 같습니다.
Date.now
함수입니다 (따라서이어야합니다 Date.now()
).fs.readFile
실제로 오류 객체를 첫 번째 매개 변수로 가지고 있습니다 (따라서 실제로 오류를 기록하거나 응답 / 파일 자체 대신 콘솔에 오류가 없음).이러한 문제만으로도 코드가 작동하지 않고 원본 saveImageToDisk()
이 제대로 작동 했을 가능성이 있습니다 . 이러한 문제가 파일을 읽는 방법에 관계없이 분명히 문제를 일으켰다는 점을 유의하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다