java文本和圖片怎么實現(xiàn)同時提交表單?相信大部分人都還沒學(xué)會這個技能,為了讓大家學(xué)會,給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)廬山免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
首先來看如下效果圖片:
表單代碼:
提交表單是采用二進(jìn)制方式提交,所以一般用來上傳圖片操作,當(dāng)在這個表單下同時上傳文本,就會報錯。但是業(yè)務(wù)需要上傳商品是文本和圖片同時上傳的,所以這里要用到commons的四個包,使用Maven導(dǎo)入,如下:
commons-io commons-io 2.4 commons-fileupload commons-fileupload 1.3.3 commons-collections commons-collections 3.1 commons-beanutils commons-beanutils 1.9.2
Java代碼如下:
主要判斷每一個參數(shù)的屬性,圖片的則進(jìn)行圖片處理,文本則進(jìn)行文本處理。
//新增產(chǎn)品 @RequestMapping("/addPro") public void addPro(HttpServletRequest request, HttpServletResponse response) throws IOException { //編碼規(guī)范 response.setContentType("text/html"); // response.setCharacterEncoding("utf-8"); Product product = new Product(); //這種方法主要通過if (item.isFormField())這個條件判別文件還是非文件 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } // 解析request請求 Iterator iter = items.iterator();// 遍歷表單中提交過來的內(nèi)容 while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (item.isFormField()) { // 如果是表單域 ,就是非文件上傳元素 String value = item.getString("UTF-8"); // 獲取value屬性的值,這里需要指明UTF-8格式,否則出現(xiàn)中文亂碼問題 if (item.getFieldName().equals("cid")) {// 對應(yīng)form中屬性的名字 int categoryId = Integer.parseInt(value); product.setCategory_id(categoryId); } else if (item.getFieldName().equals("cname")) { product.setName(value); }else if (item.getFieldName().equals("introduction")) { product.setIntroduction(value); }else if (item.getFieldName().equals("title")) { product.setTitle(value); }else if (item.getFieldName().equals("price")) { BigDecimal price=new BigDecimal(value); product.setPrice(price); }else if (item.getFieldName().equals("stock")) { product.setStock(Integer.parseInt(value)); }else if (item.getFieldName().equals("status")) { product.setStatus(Integer.parseInt(value)); }else if (item.getFieldName().equals("details")) { product.setDetail(value); } }else { String filename = item.getName(); // 文件的名字 String imgname = filename.substring(0, filename.indexOf(".")); //減去“.”后面的字符 //tomcat啟動位置 // String t1 = System.getProperty("user.dir").substring(0, // System.getProperty("user.dir").length() - 4); String path = request.getServletContext().getRealPath("img"); //target找到img位置 Long time = Calendar.getInstance().getTimeInMillis(); //時間戳,保證文件命名不重復(fù) String imgurl = "./img/"+imgname+time+".jpg"; product.setImage(imgurl); System.out.println(imgurl); File saveFile = new File(path+"/" + imgname+time+".jpg"); // 定義一個file指向一個具體的文件 try { item.write(saveFile);// 把上傳的內(nèi)容寫到一個文件中 System.out.println("上傳到"+path+"成功"); } catch (Exception e) { /* e.printStackTrace(); */ System.out.println("文件"+path+"為空"); } } } if(productDaoService.addProduct(product)){ PrintWriter out = response.getWriter(); out.print(""); }else { PrintWriter out = response.getWriter(); out.print(""); } }
看完上述內(nèi)容,你們掌握java文本和圖片同時提交表單的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!