上传图片或文件 方法一

 最近在巩固一些知识点,回过头看之前做过的项目,所以就在这里总结一下

话不多说,直接看源码

 

前端

publish-menu.jsp

1 <form action="PublishMenu" method="post" enctype="multipart/form-data" >
2 
3     <input name="menu_picture" type="file" id="file_input" style="display: none;" onchange="preImg(this.id,'photo_finish')" />
4     <label for="file_input">
5         <img id="photo_finish" src="img/finished_menu.jpg" width="210px" height="250px" style="margin-right: 20px;" />
6     </label>
7 
8 </form>

show-img.js

 1 function getFileUrl(sourceId) {
 2     var url;
 3     if(navigator.userAgent.indexOf("MSIE") >= 1) { // IE  
 4         url = document.getElementById(sourceId).value;
 5     } else if(navigator.userAgent.indexOf("Firefox") > 0) { // Firefox  
 6         url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
 7     } else if(navigator.userAgent.indexOf("Chrome") > 0) { // Chrome  
 8         url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));
 9     }
10     return url;
11 }
12 
13 function preImg(sourceId, targetId) {
14     var url = getFileUrl(sourceId);
15     var imgPre = document.getElementById(targetId);
16     imgPre.src = url;
17 /*  alert("图片路径获取前!");
18     var p = url.getPath(); //将图片的src变为获取到的路径
19     alert("图片路径!" + p); */
20 }

 

后台

package com.dgx.MenuShare.servlet;
import
java.io.File; import java.io.IOException; import java.util.List;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.dl.MenuShare.service.MenuService;@SuppressWarnings("serial") public class PublishMenuServlet extends HttpServlet { @Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 设置请求对象以utf-8的形式接受表单数据req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");int x = 0 ;int y = 0 ;String text[][] = new String[16][2] ; //准备用来存储其他非文件的信息String img[][] = new String[9][2] ; //准备用来存储文件的信息//新建上传工厂DiskFileItemFactory factory = new DiskFileItemFactory(); //设置文件大小限制。//如果小于该文件限制,则文件直接保存在内存中//如果大于该文件限制,则文件将保存到设置的临时目录中。factory.setSizeThreshold(1024 * 1024);//getServletContext().getRealPath() 的用法 //比如s参数'/temp'表示根路径下的temp文件夹'返回一个File类型'你可以用判断它是否存在'不存在就建立'存在就用它 //设置临时目录factory.setRepository(new File(getServletContext().getRealPath("/temp")));//实例化一个ServletFileUpload对象用来上传ServletFileUpload sfu = new ServletFileUpload(factory);//得到所有的表单项List<FileItem> all = null;try {all = sfu.parseRequest(req);} catch (FileUploadException e) {e.printStackTrace();}for(FileItem item : all) {//如果是普通表单字段if(item.isFormField()) {//获得该字段名称String name = item.getFieldName();System.out.println("字段名称:"+name); //获得该字段值String value = item.getString("utf-8");System.out.println("字段值:"+value); text[x][0] = name ;text[x][1] = value ;System.out.println("数组text"+x+":"+text[x][0]+" "+text[x][1]);x++ ;//将值设置到request属性范围中 req.setAttribute(name, value);} //如果为文件域else {//取得文件域字段名String name = item.getFieldName();System.out.println("文件域字段名:"+name); //取得文件名String value = item.getName();System.out.println("文件名:"+value); //截取文件名int begin = value.lastIndexOf("\\");value = value.substring(begin + 1);img[y][0] = name ; if ( value!=null && value!="" ) {//将值设置到request属性范围中 req.setAttribute(name, value); //设置上传文件目录String path = req.getRealPath("/"); //获取服务器下路径path = path.replaceAll("\\\\", "/"); String uploadPath = path + "/upload" ;File file = new File(uploadPath);if (!file.exists()) {new File(uploadPath).mkdir();}//写入文件try {if ( y==0 ) {item.write(new File(uploadPath,text[0][1]+".jpg"));img[y][1] = "upload/"+text[0][1]+".jpg" ; }else {item.write(new File(uploadPath,text[0][1]+"步骤"+y+".jpg"));img[y][1] = "upload/"+text[0][1]+"步骤"+y+".jpg" ;} System.out.println("数组img"+y+":"+img[y][0]+" "+img[y][1]);y++ ;} catch (Exception e) {e.printStackTrace();}}else {img[y][1] = "" ;} } }

      ......

      String menu_picture = img[0][1] ;
      String picture_one = img[1][1] ; 
      ......
      MenuService menuService = new MenuService() ;

        把 图片文件路径 和其他信息 存进DBint i = menuService.AddMenuInfoService( ...... ) ;if ( i!=0 ) {req.setAttribute("massger", "上传图片文件成功");}else {req.setAttribute("massger", "上传图片文件失败"); 
     }
     //上传完成后执行跳转
     req.getRequestDispatcher("XXX.jsp").forward(req, resp);
  }
}

 

 

共同学习,共同进步,若有补充,欢迎指出,谢谢!

 

转载于:https://www.cnblogs.com/dengguangxue/p/10757601.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Ubuntu上轻松安装Oracle Java

Ubuntu上的开发人员习惯于至少看到两种Java风格。 OpenJDK是Java运行时和编译器的开源构建。 Oracle JDK以此为基础&#xff0c;但是增加了一些封闭源组件。 从理论上讲&#xff0c;OpenJDK是Java 7的官方参考实现 &#xff0c;并且完全可以满足您的所有需求。 在实践中&#…

今天发现新大陆:haml和Emmet

其实一开始小渣渣我只是想接触一下&#xff08;css预处理器&#xff09;sass&#xff0c;可是突然冒出一个haml。 原文是酱紫的。 Sass 是采用 Ruby 语言编写的一款 CSS 预处理语言&#xff0c;它诞生于2007年&#xff0c;是最大的成熟的 CSS 预处理语言。最初它是为了配合 H…

Docker系列(五):.Net Core实现k8s健康探测机制

k8s通过liveness来探测微服务的存活性&#xff0c;判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误&#xff0c;可能是系统超载&#xff0c;也可能是资源死锁&#xff0c;此时 httpd 进程并没有异常退出&#xff0c;在这种情况下重启容器可能是最直接…

编写java程序计算梯形面积_学习练习 java面向对象梯形面积

package com.hanqi;public class Ladder {double ShangDi;double XiaDi;double Gao;double MianJi;Ladder(double ShangDi, double XiaDi, double Gao){//使用参数来初始化属性//this 代表当前类this.ShangDi ShangDi;this.XiaDi XiaDi;this.Gao Gao;}//方法的命名&#xff…

02-再探MySQL数据库

一、数据类型 1、数值类型 a、整数类型 整数类型&#xff1a;TINYINT SMALLINT MEDIUMINT INT BIGINT 作用&#xff1a;存储年龄&#xff0c;等级&#xff0c;id&#xff0c;各种号码等。 tinyint[(m)] [unsigned] [zerofill]小整数&#xff0c;数据类型用于保存一些范围的整数…

如何在WebLogic Server中创建MySQL数据源

使用应用程序服务器的一个很酷的事情是&#xff0c;它允许您在应用程序外部创建DataSource&#xff0c;并且可以与线程池和事务管理器等一起管理它。对于WebLogic Server&#xff0c;它附带了许多内置的JDBC驱动程序&#xff0c;例如Oracle数据库和MySQL等随时可用。 在这里&am…

js原生带缩略图的图片切换效果

js原生带缩略图的图片切换效果 本例中用到的 moveElement(elementID,final_x,final_y,interval)是来自《JavaScript DOM编程艺术&#xff08;中文第二版&#xff09;》一书第10章中有一段代码。&#xff08;可以直接baidu&#xff09; 左边是banner图&#xff0c;右边是缩略图…

linux 基础10-磁盘配额管理

1. 基本概念 1.1 概念&#xff1a; 在linux系统中&#xff0c;由于是多人多任务的使用环境&#xff0c;所以会有多人共同使用一个硬盘空间的情况&#xff0c;如果其中少数几个人大量使用了硬盘空间的话&#xff0c;势必会压缩其他使用者的使用空间&#xff0c;因此管理员应该适…

java 全半角转换_Java 全半角转换

* 全角转半角的 转换函数* return String*/public static final String full2HalfChange(String QJstr){StringBuffer outStrBuf new StringBuffer("");String Tstr "";byte[] b null;for (int i 0; i < QJstr.length(); i) {Tstr QJstr.substring…

第九章:内存管理

内存管理 引用计数&#xff1a;垃圾回收机制的依据 a.变量的值被引用&#xff0c;该值的引用计数 1b.变量的值被解绑&#xff0c;该值的引用计数 -1c.引用计数为0时就会被垃圾回收机制回收​ 引用计数会出现循环引用问题&#xff1a;相互引用无法释放 a.两个变量引用其值&#…

Centos系统通过tar.gz包安装MySQL5.7

环境准备&#xff1a; 操作系统&#xff1a; http://vault.centos.org/6.5/isos/x86_64/ 下载 CentOS-6.5-x86_64-bin-DVD1.iso vmware workstation下安装系统 MySQL安装包连接地址&#xff1a; https://downloads.mysql.com/archives/community/ 下载 mysql-5…

java web转码_javaweb后台转码

为什么需要转码?客户端向服务器发送请求的四种情况:1、URL方式直接访问;2、页面链接(属于get请求);3、表单get提交;4、表单post提交1.url(url和页面链接):各大浏览器、各个操作系统对URL的URI、QueryString编码都可能存在不同.tomcat对URI的解码操作是首先获取Connector的解码…

微信小程序实战篇:商品属性联动选择(案例)

本期的微信小程序实战篇来做一个电商网站经常用到的-商品属性联动选择的效果&#xff0c;素材参考了一点点奶茶。 效果演示&#xff1a; 商品属性联动.gif代码示例 1、commodity.xml <!-- <view class"title">属性值联动选择</view> --> <!--…

使用Mockito在Java中进行模拟入门

我们都编写了单元测试&#xff0c;但是有时我们面临的挑战是被测单元可能依赖于其他组件。 并且配置其他组件进行单元测试绝对是一个过大的选择。 相反&#xff0c;我们可以使用Mocks代替其他组件&#xff0c;并继续进行单元测试。 为了说明如何使用模拟&#xff0c;我有一个数…

2.12 Hivet中order by,sort by、distribute by和cluster by

https://cwiki.apache.org/confluence/display/Hive/LanguageManualSortBy一、order by对全局数据的排序&#xff0c;仅仅只有一个reduce&#xff1b;Hive中的order by跟传统的sql语言中的order by作用是一样的&#xff0c;会对查询的结果做一次全局排序&#xff0c; 所以说&am…

如何相互转换逗号分隔的字符串和List【转】

将逗号分隔的字符串转换为List 方法 1&#xff1a; 利用JDK的Arrays类 String str "a,b,c"; List<String> result Arrays.asList(str.split(",")); 方法 2&#xff1a; 利用Guava的Splitter String str "a, b, c"; List<String&g…

禁用F12和鼠标右键,防止查看控制台代码

虽然是个治标不治本的办法&#xff0c;还是挺有用的 在禁用同时&#xff0c;自身的代码健壮性也需要加强 // 屏蔽F12document.onkeydown function () {//f12键if (window.event && window.event.keyCode 123) {event.keyCode 0;event.returnValue false;}// enter…

java 文件解析异常_java中异常的解析

Java Exception&#xff1a;1、Error2、Runtime Exception 运行时异常3、Exception4、throw 用户自定义异常异常类分两大类型&#xff1a;Error类代表了编译和系统的错误&#xff0c;不允许捕获&#xff1b;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行…

Spring JMS:处理事务中的消息

1.引言 这篇文章将向您展示在使用JMS异步接收消息期间&#xff0c;使用者执行过程中的错误如何导致消息丢失。 然后&#xff0c;我将解释如何使用本地事务解决此问题。 您还将看到这种解决方案在某些情况下可能导致消息重复&#xff08;例如&#xff0c;当它将消息保存到数据库…

OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题

参考&#xff1a; Problem Confirming the SSL Certificate - OSX OS X EI Captain 下解决 There was a problem confirming the ssl certificate 问题 在安装 matplotlib 时&#xff0c;出现以下错误&#xff1a; python3 -mpip install matplotlibCollecting matplotlibCould…