問題のアップロードファイルnodejsがあります。私は読んだ stack1 と stack2です。しかし、私はこのように端末に出力する上で、この異なる場合 を考える:エラー:EXDEV:デバイス間のリンクが許可されていません。 '/ tmp/on Ubuntu 16.04 LTS
> Unhandled rejection Error: EXDEV: cross-device link not permitted,
> rename '/tmp/31941-53enly.png' ->
> 'public/files/complaint/Screenshot_2016-05-01_01-16-55.png'
> at Error (native)
> at Object.fs.renameSync (fs.js:681:18)
> at null.<anonymous> (/home/faris/myprojects/orchestrale-server/routes/complaintimage.js:163:20)
> at tryCatcher (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/util.js:16:23)
> at Promise._settlePromiseFromHandler (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:502:31)
> at Promise._settlePromise (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:559:18)
> at Promise._settlePromise0 (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:604:10)
> at Promise._settlePromises (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:683:18)
> at Async._drainQueue (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/async.js:138:16)
> at Async._drainQueues (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/async.js:148:10)
> at Immediate.Async.drainQueues [as _onImmediate] (/home/faris/myprojects/orchestrale-server/node_modules/sequelize/node_modules/bluebird/js/release/async.js:17:14)
> at processImmediate [as _immediateCallback] (timers.js:383:17)
私のコード:基本OSのような他のディストリビューションに
if (_.isEmpty(req.files) == false) {
var tp = avatar_folder+req.files.file.name;
fs.renameSync(req.files.file.path, tp, function(err){});
var avatar = req.files.file.name;
}
コードの仕事が、私はDebianのジェシーやUbuntuの16でプロジェクトを実行するときLTSは端末でエラーが発生する。
どのような体は助けになれませんか?そのコードは基本的なosとarchで完璧に動作します。
両方の質問でなければなりませんまったく同じ問題が原因です(ファイルシステム/パーティション間でファイルの名前を変更することはできません)。ファイルの最終的な場所と同じファイルシステム上の一時ディレクトリを使用するようにアップロードミドルウェアを構成できるかどうか試してみるべきです。これが他のディストリビューションで動作する理由は、 '/ tmp'のために別のパーティションを作成しないものがあるからです。 – robertklep