我有一个函数可以下载文件并根据发送给它的参数将其保存在嵌套目录结构中(例如:./somedir/a/b/c或./somedir2/a/d/b).我不能相信沿途的任何目录都已创建,因此我需要检查并创建文件路径中的每个目录(如果它不存在).现在,我有一些适用于Node 0.4.x的代码,但至少在Windows版本的0.5.x(特别是在0.5.10上测试)中出现了一些问题.
我对理解文件系统很糟糕,所以如果有人能弄明白我是如何做到这一点的,或者用类似的其他东西替换它,我会非常感激.目标是使代码能够在Unix和Windows以及Node 0.4.x和0.5.x上正常运行.
// automatically create directories if they do not exist at a path
function mkdirs(_path, mode, callback) {
var dirs = _path.split("/");
var walker = [dirs.shift()];
var walk = function (ds, acc, m, cb) {
if (ds.length > 0) {
var d = ds.shift();
acc.push(d);
var dir = acc.join("/");
fs.stat(dir, function (err, stat) {
if (err) {
// file does not exist
if (err.errno == 2) {
fs.mkdir(dir, m, function (erro) {
if (erro && erro.errno != …
Run Code Online (Sandbox Code Playgroud) 我有一把公钥
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwKMDEDjbP5v/9kcvpQKf
IG3nU5Yid/tUNIeXBSDlxqhTEOKs8iQHXk0T17C4g7KHmrT2hxUomaAa2wwbfL+Z
4ppqvZZ4cu7CO6jaA0HyoBCU96siSuE0mPt8kU/PRA9+nAwu9lu9oYZUiVVJ3D4f
o2bc+jWWL4GGY+PdSlz81ZW5cW/LOmNs9D0jJIxbwNocHxGgJ+xTZ3JKp6AO4MvL
zXyipXu562N8wVc7UIgYYnvr63zFU8vzRL180X5x5MiJbjTYbfLH3z7qINPMZZLv
A5vzJ0HX3J8rG96tmFuUzopCnvf+WVLvaS2T5uMxieK9dfA32CFQp4i3cj39c2b7
NwIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
存储为base64编码的字符串(在MySQL中,设置为$ row ['public_key'])
LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF3S01ERURqYlA1di85a2N2cFFLZgpJRzNuVTVZaWQvdFVOSWVYQlNEbHhxaFRFT0tzOGlRSFhrMFQxN0M0ZzdLSG1yVDJoeFVvbWFBYTJ3d2JmTCtaCjRwcHF2Wlo0Y3U3Q082amFBMEh5b0JDVTk2c2lTdUUwbVB0OGtVL1BSQTkrbkF3dTlsdTlvWVpVaVZWSjNENGYKbzJiYytqV1dMNEdHWStQZFNsejgxWlc1Y1cvTE9tTnM5RDBqSkl4YndOb2NIeEdnSit4VFozSktwNkFPNE12TAp6WHlpcFh1NTYyTjh3VmM3VUlnWVludnI2M3pGVTh2elJMMTgwWDV4NU1pSmJqVFliZkxIM3o3cUlOUE1aWkx2CkE1dnpKMEhYM0o4ckc5NnRtRnVVem9wQ252ZitXVkx2YVMyVDV1TXhpZUs5ZGZBMzJDRlFwNGkzY2ozOWMyYjcKTndJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
Run Code Online (Sandbox Code Playgroud)
用PHP.我正在尝试使用此字符串来加密字符串数据,但它只是失败而没有告诉我为什么当我使用以下代码时:
$success = openssl_public_encrypt($data, $encrypted, base64_decode($row['public_key']));
Run Code Online (Sandbox Code Playgroud)
运行上述操作时,$success
始终为false且$encrypted
为空.我已经尝试运行公钥openssl_pkey_get_public()
并将资源发送到openssl_public_encrypt()
没有运气.写入文件不是一种选择,也不是存储私钥.
有谁知道如何让这个工作?(或者它是否适用于其他所有人,这只是一个奇怪的服务器问题?)
编辑:由于我的问题似乎有些混乱,这里是我正在使用的测试代码及其输出.(注意:我已经删除了base64编码,只是为了看看是否有任何区别)
$pubkey = openssl_get_publickey($row['public_key']);
$publicKey = openssl_pkey_get_details($res);
$encrypted = null;
$success = openssl_public_encrypt($data, $encrypted, $pubkey);
print "\npubkey1 " . $row['public_key'];
print "\npubkey2 " . $pubkey;
print "\npubkey3 " . $publicKey;
print "\npubkey4 " . $publicKey["key"];
print "\nencryption " . ($success ? 'true' : 'false') . …
Run Code Online (Sandbox Code Playgroud)