Nodejs + expressjs + node-formidable 拋異常?
當我們的 Nodejs + expressjs 專案需要從客戶端向伺服器端上傳檔案的時候,node-formidable往往是開發者的首選(下面我會解釋,這是錯誤的判斷)。於是我像node-formidable提供的例子一樣,寫了線面的程式碼:
app.post('/', function(req, res, next){
// parse a file upload
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
if (err) return next(err);
res.send(200, util.inspect({fields: fields, files: files}));
});
});
但是,form.parse就是拋異常,後來Googling一下才知道,expressjs已經包括node-formidable(更準確的說是connect包括node-formidable),所以傳過來的req已經分析過了,所有的檔案資訊已經在req.files裡了,異常是因為試圖二次解析form。這裡有expressjs自己的例子。
當然不要忘了下面這句話:
app.use(express.bodyParser({ keepExtensions: true, uploadDir: '/my/files' }));
否則檔名就會變成這樣"/tmp/8ef9c52abe857867fd0a4e9a819d1876",並且丟失了副檔名。
以上的教訓就是還是對expressjs不夠熟悉,如果npm list一下的話,馬上就能看到formidable了。歡迎大家交流指教,謝謝.
相關文章
- WPF坑 - 亂拋異常
- 日常Bug排查-拋異常不回滾
- NodeJS之異常處理NodeJS
- 執行ArrayList的remove(object)方法拋異常?REMObject
- NodeJS異常處理uncaughtException篇NodeJSException
- nodejs程式異常退出處理方法NodeJS
- Nodejs try catch捕捉異常失效場景NodeJS
- Java中的Exception拋異常對效能的影響 - BaeldungJavaException
- Java 列舉查詢並不拋異常的實現Java
- Java 建立使用者異常類、將異常一直向上拋、 throw和throws的區別Java
- Nodejs Nestjs 路程 之 異常過濾器ExceptionfilterNodeJS過濾器ExceptionFilter
- 解決Java執行過程中拋簽名異常的問題Java
- Service 層異常拋到 Controller 層處理還是直接處理?Controller
- expressjs路由和Nodejs伺服器端傳送REST請求 - - ITeye部落格Express路由NodeJS伺服器REST
- 異常篇——異常處理
- 異常和異常呼叫鏈
- 實現的方法中,拋的異常只能比父類或介面中的少(轉)
- sjh 儲存問題 資料沒新增成功 居然不拋異常 也不報錯
- Java 異常(二) 自定義異常Java
- Java checked異常和unchecked異常。Java
- 異常-編譯期異常和執行期異常的區別編譯
- 記 QEMU 虛擬磁碟裝置移動檔案拋異常但實際移動成功
- ExpressJS入門指南(二)ExpressJS
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- jmu-Java-06異常-01-常見異常Java
- hibernate異常之--count查詢異常
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- oracle 異常Oracle
- OutOfMemoryError異常Error
- Java異常Java
- 異常(Exception)Exception
- Java 異常Java
- 異常JavaJava
- 【java】異常Java
- java 異常Java
- Flutter 常見異常分析Flutter