国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

Node.js調用fs.renameSync報錯(Error: EXDEV, cross-device link not permitted)

2024-05-06 16:41:37
字體:
來源:轉載
供稿:網友

在寫一個文件上傳的功能時候,調用fs.renameSync方法錯誤

出錯 代碼所在如下:

 function upload(response,request){ console.log("upload called"); var form = new formidable.IncomingForm(); console.log("about to parse"); form.parse(request, function(error, fields, files) {  console.log("parsing done");  fs.renameSync(files.upload.path, "./tmp/test.jpg");  response.writeHead(200, {"Content-Type": "text/html"});  response.write("received image:<br/>");  response.write("<img src='/show' />");  response.end(); }); }

大致分析后,預計是因為 跨磁盤分區移動 或操作文件會有權限問題。

下面提供兩種解決辦法:

方法一:

主要利用fs的createReadStream、createWriteSream和unlinkSync方法

具體代碼如下:

 function upload(response,request){ console.log("upload called"); var form = new formidable.IncomingForm(); console.log("about to parse"); form.parse(request, function(error, fields, files) {  console.log("parsing done"); // fs.renameSync(files.upload.path, "./tmp/test.jpg");  var readStream=fs.createReadStream(files.upload.path);  var writeStream=fs.createWriteStream("./tmp/test.jpg");  readStream.pipe(writeStream);  readStream.on('end',function(){  fs.unlinkSync(files.upload.path);  });  response.writeHead(200, {"Content-Type": "text/html"});  response.write("received image:<br/>");  response.write("<img src='/show' />");  response.end(); }); }

PS:我用的node版本是0.10.69,如果使用的是0.6以下的版本,可以使用util.pump

相應代碼只需將上面的代碼中readStream.on處改成:(注意引入util模塊)

util.pump(readStream,writeStream, function() { fs.unlinkSync('files.upload.path');});

方法二:

這種就簡潔很多了

添加一個 form.uploadDir='tmp' 即可(寫一個臨時路徑)

 function upload(response,request){ console.log("upload called"); var form = new formidable.IncomingForm(); form.uploadDir='tmp'; console.log("about to parse"); form.parse(request, function(error, fields, files) {  console.log("parsing done");  fs.renameSync(files.upload.path, "./tmp/test.jpg");  response.writeHead(, {"Content-Type": "text/html"});  response.write("received image:<br/>");  response.write("<img src='/show' />");  response.end(); }); }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉水县| 达州市| 光泽县| 新竹市| 泰安市| 鲁甸县| 晋中市| 洪雅县| 汾西县| 寿宁县| 新巴尔虎右旗| 济南市| 吴川市| 赤壁市| 双峰县| 玉田县| 绥中县| 扎囊县| 德州市| 冕宁县| 若羌县| 商南县| 车致| 盘山县| 绥滨县| 宜君县| 金溪县| 江西省| 建宁县| 常山县| 中西区| 屏南县| 库车县| 江永县| 日喀则市| 古浪县| 左贡县| 景德镇市| 古丈县| 屏东县| 保康县|