>  기사  >  웹 프론트엔드  >  nodejs에서 휴대폰에서 사진을 얻는 방법

nodejs에서 휴대폰에서 사진을 얻는 방법

WBOY
WBOY원래의
2023-05-25 11:10:37641검색

Node.js로 휴대폰에서 사진을 얻는 방법

Node.js는 JavaScript를 기반으로 한 백엔드 서버 기술로 높은 효율성, 유연성, 배우기 쉽고 사용하기 쉬운 등의 장점을 가지고 있습니다. 웹 개발 및 기타 분야에 사용됩니다.

모바일 기기 시장이 지속적으로 확장됨에 따라 점점 더 많은 사람들이 스마트폰을 사용하여 사진을 찍고, 저장하고, 공유하고 있습니다. 그러나 웹 애플리케이션에서 이러한 사진을 작동하려면 휴대폰에서 사진을 가져와 서버에 업로드해야 하며, 이를 위해서는 Node.js를 사용하여 휴대폰에서 사진을 가져와야 합니다.

이 기사에서는 Node.js를 사용하여 휴대폰에서 사진을 가져와 서버에 업로드하는 기능을 구현하는 방법을 소개합니다.

1단계: 필요한 모듈 설치

휴대폰에 사진을 찍으려면 node-exiftool과 formidable이라는 두 개의 Node.js 모듈을 사용해야 하므로 먼저 설치해야 합니다.

npm을 사용하여 node-exiftool을 설치할 수 있습니다. npm은 Node.js 모듈을 쉽게 다운로드하고 설치할 수 있는 도구입니다. 다음 명령을 입력하세요:

npm install node-exiftoolnpm install node-exiftool

使用npm安装formidable,输入以下命令:

npm install formidable

npm을 사용하여 formidable을 설치하고 다음 명령을 입력하세요:

npm install formidable

2단계: 쓰기 the code

휴대폰에서 사진을 얻으려면 Node.js의 http 모듈을 사용하여 클라이언트 요청을 듣고 node-exiftool 모듈을 사용하여 사진의 메타데이터 정보를 얻은 다음 formidable 모듈을 사용해야 합니다. 이미지를 서버에 업로드합니다.

사진을 가져오는 코드는 다음과 같습니다.

var http = require('http');
var exiftool = require('node-exiftool');
var formidable = require('formidable');

http.createServer(function (req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      if (err) throw err;
      var ep = new exiftool.ExiftoolProcess();
      ep.open();
      ep.readMetadata(files.file.path, ['-File:all'], function (error, metadata) {
        if (error) throw error;
        console.log(metadata);
      });
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('success');
    });
    return;
  } 
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(`
    <form action="/upload" method="post" enctype="multipart/form-data">
      <div>
        <label>Select image:</label>
        <input type="file" name="file">
      </div>
      <div>
        <button type="submit">Upload</button>
      </div>
    </form>
  `);
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

위 코드를 사용하면 node 명령으로 애플리케이션을 시작하고 브라우저에 http://127.0.0.1:8080/을 입력하여 테스트할 수 있습니다.

3단계: 메타데이터 정보 얻기

node-exiftool 모듈을 사용하여 메타데이터 정보를 얻으려면 exiftool 프로세스를 열고 readMetadata 메서드를 사용하여 이미지의 메타데이터 정보를 읽어야 합니다.

먼저, 코드에 node-exiftool을 도입해야 합니다:

var exiftool = require('node-exiftool');

그런 다음, exiftool 프로세스를 인스턴스화하고 open 메소드를 사용하여 프로세스를 열어야 합니다.

var ep = new exiftool.ExiftoolProcess();
ep.open();

마지막으로 readMetadata 메소드를 사용하여 메타데이터를 읽습니다. 이미지 정보:

ep.readMetadata(files.file.path, ['-File:all'], function (error, metadata) {
  if (error) throw error;
  console.log(metadata);
});

readMetadata 메소드는 파일 경로, 매개변수 옵션, 콜백 함수 등 세 가지 매개변수를 받아야 합니다. 위 코드에서는 모든 메타데이터 정보를 얻기 위해 '-File:all' 매개변수 옵션을 사용했습니다. 콜백 함수로 얻은 메타데이터는 메타데이터 개체입니다.

4단계: 서버에 사진 업로드

강력한 모듈을 사용하여 서버에 이미지를 업로드하려면 강력한 IncomingForm 클래스의 도움이 필요합니다. 이 클래스의 구문 분석 메서드는 양식 데이터를 구문 분석하고 업로드된 파일을 얻을 수 있습니다.

먼저 코드에 강력한 모듈을 도입해야 합니다.

var formidable = require('formidable');

그런 다음 IncomingForm 클래스의 구문 분석 메서드를 통해 양식 데이터를 구문 분석하고 업로드된 파일을 가져옵니다.

var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
  if (err) throw err;
});

파일 개체에서 관련성을 얻을 수 있습니다. 파일 이름, 파일 크기, 파일 형식, 임시 파일 경로 등과 같은 업로드된 파일에 대한 정보입니다.

마지막으로 Node.js에 내장된 fs 모듈을 사용하여 파일을 서버에 저장할 수 있습니다.

var fs = require('fs');
fs.rename(files.file.path, __dirname + '/uploaded/' + files.file.name, function (err) {
  if (err) throw err;
});

이름 바꾸기 방법은 임시 파일을 서버의 지정된 디렉터리로 이동하고 __dirname은 현재 파일이 있는 디렉터리를 나타냅니다. 파일이 위치합니다.

5단계: 전체 코드 예제

위 단계를 통합하면 휴대폰에서 사진을 가져와 서버에 업로드하는 기능을 구현하는 완전한 Node.js 코드 예제를 얻을 수 있습니다.

var http = require('http');
var exiftool = require('node-exiftool');
var formidable = require('formidable');
var fs = require('fs');

http.createServer(function (req, res) {
  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      if (err) throw err;
      var ep = new exiftool.ExiftoolProcess();
      ep.open();
      ep.readMetadata(files.file.path, ['-File:all'], function (error, metadata) {
        if (error) throw error;
        console.log(metadata);
      });
      fs.rename(files.file.path, __dirname + '/uploaded/' + files.file.name, function (err) {
        if (err) throw err;
      });
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('success');
    });
    return;
  } 
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(`
    <form action="/upload" method="post" enctype="multipart/form-data">
      <div>
        <label>Select image:</label>
        <input type="file" name="file">
      </div>
      <div>
        <button type="submit">Upload</button>
      </div>
    </form>
  `);
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

결론🎜🎜위는 Node.js를 사용하여 휴대폰에서 사진을 얻는 방법에 대한 소개입니다. http 모듈, node-exiftool 모듈 및 Node.js의 강력한 모듈을 사용하면 사진을 쉽게 업로드할 수 있습니다. 휴대폰에서 서버 기능으로. 또한, 개발 과정에서는 보안과 안정성에 주의가 필요하며, 사용자가 업로드한 파일은 정확하게 검증 및 처리되어야 합니다. 🎜

위 내용은 nodejs에서 휴대폰에서 사진을 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.