【发布时间】:2016-11-04 06:05:16
【问题描述】:
更新了原始问题以尝试简化上下文:
我想将数组中的值应用为数组中每个值的函数的第一个参数。
例如所以对于 foo 中的arg1:
foo(arg1, arg2, arg3)
var myArray = [ 'image1.jpg', 'image2.jpg', 'image3.jpg' ]
应用每张图片作为第一个参数:
foo(image1.jpg, arg2, arg3)
foo(image2.jpg, arg2, arg3)
foo(image3.jpg, arg2, arg3)
我在想 .apply 方法可能是一种方法,但无法让它发挥作用。需要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 的上传功能,这样我就可以上传一批图片(而不是一张可以正常工作的图片)。
Cloudinary 上传方法执行经过身份验证的上传 API 调用 通过 HTTPS 发送图像文件:
cloudinary.v2.uploader.upload(file, options, callback);
forum 表明我可以
“将您现有的图像迁移到 Cloudinary,编写一个简短的脚本 遍历您的图像并使用 Cloudinary 将它们一一上传 上传 API。”
所以我试图通过使用fs-readdir-recursive 来获取指定文件夹中所有文件的数组来实现这一点。
当单个图像被指定为上传函数的第一个参数时,该过程有效。 我以为我可以创建一个变量来传递 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();
}
}
【问题讨论】:
标签: javascript arrays node.js file-upload cloudinary