關於post方式上傳檔案附件的錯誤

2021-08-27 12:48:56 字數 802 閱讀 5243

我改造了spring security, 使其可以進行資料級別的驗證,這樣以來需要從http request中讀取引數值。今天在測試乙個上傳檔案的頁面時發現了個奇怪的問題。

我在我spring security的voter中來獲得頁面提交的引數,因為是enctype="multipart/form-data"來提交表單的,所以用以下code來解析引數。

mapmap = new hashmap();

servletfileupload fileupload = new servletfileupload();

fileitemiterator items = fileupload.getitemiterator(request);

while (items.hasnext()) );

}}

順利的把引數得到了,security就走完了,進入struts業務方法,奇怪的事情發生了,form中值都不見了,當然提交的file也不見了。於是google了下,說是request中的流檔案只能被解析一次,e文網也沒找到好的解決方法,這裡無論我用parserequest方式還是像我上面code型別,都有這個問題,當然也包括了用srping 的web方式解析,總之不行,理由應該是:stream被消費過就沒了。

問題解決了,我對底層的實現其實還是理解不到位,只是會用,因此會有這樣的問題。另外層次分的不清晰,如果使用spring security做資料級許可權驗證,就可能會碰到這個問題,最好的方式應該是有一層專業解析資料的level,然後無論security還是業務都基於這一層的資料來進行。這個是屬於意外情況把,花了我不少時間,打亂了原來的計畫

附件 檔案上傳

在前一篇文獻中介紹的檔案上傳,主要是依賴外掛程式的方法實現使用,只是編碼一些伺服器裡面的內容。而今天要介紹的是用編寫的 實現檔案上傳功能,上傳檔案的原理基本一致,只是需要編寫的 相對複雜一點。getattachmentfile 改變事件 getattachmentfile change functi...

android 使用post方式上傳檔案

public static string post string actionurl,mapparams,mapfiles throws ioexception dataoutputstream outstream new dataoutputstream conn getoutputstream ...

python使用post方式上傳檔案

前言 由於專案需求做的介面測試有上傳檔案這一要求,在查資料時候發現用requests來做上傳檔案很簡單,所以下了這個庫來完成。後續有時候會看看能不能用傳統地urllib2來做。首先你要有個requests 然後把它import進來 接著 def post self,url,param dict,pa...