使用jsp+servlet+commons-fileupload上傳圖片的時候出現無法擷取圖片項__js

來源:互聯網
上載者:User

在做個小項目的過程中需要用到圖片上傳功能,於是使用一個適用於小檔案上傳的commons-fileupload組件。 

其響應過程是這樣的:在jsp頁面通過input標籤獲得圖片檔案==>發送到servlet中處理==>servlet中驗證大小、格式等,最後寫入硬碟與路徑儲存到資料庫==>控制頁面跳轉

servlet處的處理代碼我就不多提了,和各大網站上大家的處理方式差不多,無非就是遵循以下幾個步驟:

1、在doPost方法中通過request請求對象擷取含有二進位流的表單內容;

2、通過工廠DiskFileItemFactory來構建上傳對象ServletFileUpload;

3、開始自己需要的業務驗證(我這裡驗證了檔案大小、是否直接路徑訪問、檔案是否為空白檔案、是否超出規定的格式);

4、寫入硬碟/資料庫記錄


前端JSP頁面的關鍵代碼如下:

<form action="test" method="post" enctype="multipart/form-data"><%session.setAttribute("uid", "test");%><input type="text" name="user_id" value="test" /><br /> <input type="text" name="user_sex" value="1" /><br /> <input type="text" name="letter_anonymous" value="1" /><br /> <input type="file" accept="image/*"/><br /> <input type="submit" value="ok" /><br /></form>
不知道大家有沒有從這段代碼裡面發現問題了。

測試的過程中發現這個二進位表單中的文本域是可以擷取到的,但是檔案域的內容卻一直顯示為空白

並不是說我沒有選擇檔案。

後來糾結了好久都沒發現問題在哪,對比一下別人的代碼發現別人的檔案標籤中加多了一個name屬性(如果想要檔案能上傳的話,就必須定義這個name屬性)。

解決方案就是在<input type="file" / >標籤中定義它的name屬性,變成:

<input type="file" name="1" accept="image/*" />

原理我還搞不懂,要查查。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.