日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传统form表单提交方式的文件上传与文件存储

發布時間:2025/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传统form表单提交方式的文件上传与文件存储 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

時隔一天,上一篇文章《文件存儲》剛一停筆,今天上午就解決了困擾我已久的文件上傳問題。

站在一個已實現功能的角度來重新看待這個文件上傳的業務:編輯頁面選擇jar包,然后通過form表單提交,上傳到后臺程序,然后保存。

對于后端實現的更多細節,可以參考我的另一篇技術分享《Java實現用戶頭像上傳》,里面較為詳細的分析了文件從瀏覽器傳輸到服務器之后的一些處理規則,包括接收方式、磁盤存儲等。

文件上傳的入口

最簡單的瀏覽器上傳入口僅需要一個form標簽:

<form action="http://localhost:8081/thingsparse/addorupdthingsparse" method="post" enctype="multipart/form-data"><input type="file" name="file" value="選擇jar包"/><input id="submit_form" type="submit" class="btn btn-success save" value="保存"/> </form>

前端只是用了傳統的form表單上傳文件的方式,提交按鈕直接submit到后臺,而不需要多寫哪怕一丁點的額外js。

值得注意的是:每條form表單參數都需要有name屬性,以及form表單的enctype="multipart/form-data"

文件的存儲

其實關鍵的代碼就是文件的接收,至于后面的存儲操作,基本上都是對IO流的操作。瀏覽《Java實現用戶頭像上傳》參考更多信息。

/*** 解析新建編輯* * @param String* newThingsParse是一個擁有ThingsParse類結構的json字符串* @return*/@RequestMapping(value = "/addorupdthingsparse")public ModelAndView saveThingsParse(MultipartFile file, HttpServletRequest request) {String idStr = request.getParameter("thingsparse_id");ThingsParse thingParse = new ThingsParse();//將被存儲于mongodb的實例String filePath = "";// jar包的路徑if (!file.isEmpty()) {File temp = new File("");filePath = temp.getAbsolutePath() + "\\" + file.getOriginalFilename();BufferedOutputStream out;try {out = new BufferedOutputStream(new FileOutputStream(new File(filePath)));out.write(file.getBytes());out.flush();out.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException ex) {ex.printStackTrace();}}logger.info("保存的jar包路徑是:" + filePath);//output:保存的jar包路徑是:D:\workspace\wxgz\json.jarthingParse.setJarPackage(filePath);thingParse.setAuthor(request.getParameter("author"));thingParse.setDirection(request.getParameter("direction"));thingParse.setEntranceClass(request.getParameter("entrance_class"));thingParse.setEntranceMethod(request.getParameter("entrance_method"));thingParse.setName(request.getParameter("thingsparse_name"));thingParse.setTestData(request.getParameter("test_data"));thingParse.setVersion(request.getParameter("version"));if (idStr == null || "".equals(idStr)) {// 新增// 獲取當前系統時間Calendar now = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String nowStr = sdf.format(now.getTime());// 將物解析實例的創建時間賦值thingParse.setCreateTime(nowStr);// 存儲thingsParseRepository.save(thingParse);} else {// 編輯thingParse.set_id(new ObjectId(idStr));if(file.isEmpty()){thingParse.setJarPackage(request.getParameter("jar_package"));}thingParse.setCreateTime(request.getParameter("thingsparse_createtime"));thingsParseRepository.save(thingParse);}String listUrl = "redirect:http://localhost:8081/thingsparse/thingsparselist";return new ModelAndView(listUrl);//后臺重定向}

總結

web應用的文件上傳是一個相對通用的功能,使用最簡單的form表單提交基本可以滿足多數應用的要求。

關鍵的思路就是前端的form表單選擇文件然后提交,后端使用類型MultipartFile 接收。而文件保存到本地磁盤可以參考《文件存儲》和《Java實現用戶頭像上傳》。

總結

以上是生活随笔為你收集整理的传统form表单提交方式的文件上传与文件存储的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。