ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejsで携帯電話から写真を取得する方法

Nodejsで携帯電話から写真を取得する方法

WBOY
WBOYオリジナル
2023-05-25 11:10:37691ブラウズ

Node.js が携帯電話から写真を取得する方法

Node.js は JavaScript をベースにしたバックエンド サーバー テクノロジであり、高効率、柔軟性、学習と使用が簡単という利点があります。現在、Web 開発やその他の分野で広く使用されています。

モバイル デバイス市場が拡大し続けるにつれて、スマートフォンを使用して写真を撮影、保存、共有する人がますます増えています。ただし、これらの写真を Web アプリケーションで操作するには、携帯電話内の写真を取得してサーバーにアップロードする必要があり、そのためには Node.js を使用して携帯電話内の写真を取得する必要があります。

この記事では、Node.jsを使って携帯電話から写真を取得し、サーバーにアップロードする機能を実装する方法を紹介します。

ステップ 1: 必要なモジュールをインストールする

携帯電話で写真を取得するには、node-exiftool と formidable という 2 つの Node.js モジュールを使用する必要があるため、最初にそれらをインストールする必要があります。

npm を使用して、node-exiftool をインストールできます。npm は、Node.js のパッケージ管理ツールです。Node.js モジュールを簡単にダウンロードしてインストールできます。次のコマンドを入力します:

npm install node-exiftool

npm を使用して formidable をインストールするには、次のコマンドを入力します:

npm install恐るべき

ステップ 2: コードを記述する

電話で写真を取得するには、Node.js の http モジュールを使用してクライアントのリクエストをリッスンし、ノードを使用する必要があります。 exiftool モジュールを使用して写真のメタデータ情報を取得し、強力なモジュールを使用して画像をサーバーにアップロードします。

写真を取得するコードは次のとおりです:

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 メソッドは、ファイルのパス、パラメータ オプション、コールバック関数の 3 つのパラメータを受け取る必要があります。上記のコードでは、「-File:all」パラメーター オプションを使用して、すべてのメタデータ情報を取得します。コールバック関数によって取得されるメタデータはメタデータ オブジェクトです。

ステップ 4: サーバーに写真をアップロードする

強力なモジュールを使用して画像をサーバーにアップロードするには、強力な IncomingForm クラスの助けが必要です。このクラスの parse メソッドはフォーム データを解析できます。アップロードされたドキュメントを取得します。

まず、コードに強力なモジュールを導入する必要があります:

var formidable = require('formidable');

次に、IncomingForm クラスの parse メソッドを通じてフォーム データを解析し、アップロードされたファイルを取得します:

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;
});

rename メソッドは、一時ファイルをサーバー上の指定されたディレクトリに移動します。 , __dirname は、現在のファイルが配置されているディレクトリを示します。

ステップ 5: 完全なコード例

上記のステップを統合すると、携帯電話から写真を取得して、それらをサーバ。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。