国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大田县| 陆川县| 拉萨市| 青州市| 云浮市| 云阳县| 安庆市| 麻栗坡县| 阜康市| 洪江市| 马龙县| 班戈县| 宜黄县| 古蔺县| 延川县| 靖西县| 杭锦后旗| 琼海市| 南部县| 启东市| 河东区| 疏附县| 木兰县| 棋牌| 屯昌县| 金昌市| 鄂托克旗| 长沙市| 石台县| 肃北| 望奎县| 尉犁县| 车险| 霍山县| 香港| 成武县| 木兰县| 中江县| 改则县| 精河县| 徐汇区|