今天就跟大家聊聊有關(guān)java中怎么將圖片和文本同時(shí)提交到表單,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
目前累計(jì)服務(wù)客戶1000多家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
表單代碼:
提交表單是采用二進(jìn)制方式提交,所以一般用來上傳圖片操作,當(dāng)在這個(gè)表單下同時(shí)上傳文本,就會(huì)報(bào)錯(cuò)。但是業(yè)務(wù)需要上傳商品是文本和圖片同時(shí)上傳的,所以這里要用到commons的四個(gè)包,使用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代碼如下:
主要判斷每一個(gè)參數(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())這個(gè)條件判別文件還是非文件 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } // 解析request請(qǐng)求 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")) {// 對(duì)應(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啟動(dòng)位置 // 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(); //時(shí)間戳,保證文件命名不重復(fù) String imgurl = "./img/"+imgname+time+".jpg"; product.setImage(imgurl); System.out.println(imgurl); File saveFile = new File(path+"/" + imgname+time+".jpg"); // 定義一個(gè)file指向一個(gè)具體的文件 try { item.write(saveFile);// 把上傳的內(nèi)容寫到一個(gè)文件中 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)容,你們對(duì)java中怎么將圖片和文本同時(shí)提交到表單有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。