ホームページ > 記事 > ウェブフロントエンド > Nodejsで携帯電話から写真を取得する方法
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 サイトの他の関連記事を参照してください。