2016-07-01 1 views
-1

は、コンテキストを簡素化しようとする元の質問を更新しました:ソリューション(Node.jsの)

私のように、配列内の値を適用したいです配列の各値の関数の第1引数。

など。だから、fooの中arg1のために:

foo(image1.jpg, arg2, arg3) 

foo(image2.jpg, arg2, arg3) 

foo(image3.jpg, arg2, arg3) 

私は.apply方法がこれを行うための方法かもしれない思考だけにこれを取得することができませんでした。

foo(arg1, arg2, arg3) 

var myArray = [ 'image1.jpg', 'image2.jpg', 'image3.jpg' ] 

最初の引数として各画像を適用します。作業。 forループは必要でしょうか?例えば

:文脈では

myFunction.apply(this, myArray) 

myFunction = foo(this, arg2, arg3) 

var oneImageArray = ['lake.jpg', 'pizza.jpg']; 

myFunction.apply(this, oneImageArray); 

cloudinary.uploader.upload(
    this, {folder: "test/name", use_filename: true, unique_filename: false , tags: 'basic_sample'},function(err,image){ 
    console.log(); 
    if (err){ console.warn(err);} 
    console.log("* "+image.public_id); 
    console.log("* "+image.url); 
    waitForAllUploads("test",err,image); 
}); 

オリジナル質問:

私がアップロードできるようcloudinaryのアップロード機能にファイルの配列を渡したいです画像のバッチ(1つの画像ではなく、うまく動作します)。画像ファイル送信中

はCloudinaryアップロード方法は、HTTPS経由で認証されたアップロードのAPI呼び出し を実行します。それは私が

「に移行することができます示唆forumから

cloudinary.v2.uploader.upload(file, options, callback); 

をご既存の画像をCloudineに転送するには、 が画像を横断し、Clを使用してそれらを1つずつアップロードする短いスクリプトを作成しますoudinaryの アップロードAPI。」

だから私は、指定したフォルダ内のすべてのファイルの配列を取得するためにfs-readdir-recursiveを使用することによって、これを達成しようとしています。

このプロセスは、アップロード機能の最初の引数として1つのイメージが割り当てられている場合に機能します。 私はfs-readdirによって返された配列を渡す変数を作成することができたかもしれないと思ったが、以下のエラーが発生したと思われる。

私の質問にはどうしてうまくいかず、ファイルのバッチのためのプロセス?

var dotenv = require('dotenv'); 
dotenv.load(); 
var fs = require('fs'); 
var cloudinary = require('cloudinary').v2; 
var uploads = {}; 

var read = require('fs-readdir-recursive'); 

var allMyImages = read("src/images"); 

cloudinary.config({ 
    cloud_name: 'myName', 
    api_key: 'myKey', 
    api_secret: 'mySecret' 
}); 

cloudinary.uploader.upload(
    allMyImages, {folder: "test/name", use_filename: true, unique_filename: false , tags: 'basic_sample'},function(err,image){ 
    console.log(); 
    if (err){ console.warn(err);} 
    console.log("* "+image.public_id); 
    console.log("* "+image.url); 
    waitForAllUploads("test",err,image); 
}); 

function waitForAllUploads(id,err,image){ 
    uploads[id] = image; 
    var ids = Object.keys(uploads); 
    if (ids.length==6){ 
    console.log(); 
    console.log ('** uploaded all files ('+ids.join(',')+') to cloudinary'); 
    performTransformations(); 
    } 
} 

答えて

1

ドキュメントに記載されているように、イメージを1つずつアップロードできます。 あなたのイメージアレイ上の単純なfor-loopが機能するはずです。

for(var i = 0; i < allMyImages.length;i++){ 
    cloudinary.v2.uploader.upload(allMyImages[i], options, callback); 
} 

幸運を祈る!

+0

これは完璧に動作します - ありがとうございます。forループを使用するときに追加するだけで、最初の引数( 'src/images /' + imagesInFolder [i]、options、callback)の前にプレフィックスとして使用していた画像パスも追加していないことに気づきました。再度、感謝します。 – fivedoor

関連する問題