首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" action="../../后台/后台方法.do"  //form表单加上这几个属性 action指向后台添加方法

 <input type="button" id="uupdatekeyword2" value="修改" onready="true" class="btns submitform"/>
<input type="button" value="取消" id="vcancel" class="btns btnCancel" style="margin-left:10px;"/>
<input type="button" onready="true" value="开始上传" class="btns submitform"/>&nbsp; //开始上传的按钮,主要是submitform方法 //上传 javascript代码 还有一些参数跟着一起存进数据库
$(".submitform").live("click",function(){
var $this = $(this);
var j = location.href;
var idd=j.substring(j.indexOf("=")+15,j.length);  //截取字符串 获得ID
$("#iiii").val(idd);  //把ID赋给隐藏域 input,后台取得id作为条件进行查询
$("#noticecontentStr").val(editor.html());   //无法获取编辑器的值,所以赋给隐藏域,后台获取隐藏域的值进行添加
$this.parents("form").find("td input[type!='button'],td select").siblings("span").remove();
$this.parents("form").find("td input[type!='button'],td select").show();
if ($this.attr("onready") == "false") {
$this.attr("onready", "true");
$this.val("保存");
return false;}
$("#noticecontentStr").val(editor.html());
$this.parents('form').ajaxSubmit({
dataType: 'json',
type: 'post',
iframe:true,
cache:false,
resetForm:false,
beforeSubmit: function() {
//获取编辑控件的值
$this.parents("form").find(".required[disabled=false]").blur();
if ($this.parents('form').find("font[class='error']").length) {
$this.parents('form').find("font[class='error']").eq(0).siblings("input,select,textarea").focus();
return false;}},success: function(data) {
$this.parents('form').find("#fileField").hide();
if(data=='-1'){
jAlert("您目前没有权限进行此操作!");
}else if(data=="-2"){
jAlert("系统异常");
}else if(data.flag=="0"){
jAlert("保存成功","系统消息",function (){
window.location.reload();
$this.parents(".dialog").dialog("close");});
ajaxNoticeList();
}else if(data.flag == "1" || data.flag == "2" || data.flag == "3"){
jAlert(data.message);}}});
}); 前台做完开始做后台咯:(先定义一些属性和类,封装起来) private File upload;//文件的
private String uploadFileName;//文件的名称
/**
* 返回结果
*/
private TheResult tr = new TheResult(); private static List<String> allowFileSuffix = new ArrayList<String>();
public UserSeriviceImpl getLos() {
return los;
}
public void setLos(UserSeriviceImpl los) {
this.los = los;
}
public TheResult getTr() {
return tr;
}
public void setTr(TheResult tr) {
this.tr = tr;
} //下面开始进入主题
//创建公告
@RequestMapping("/添加方法.do")
public void newCelue(){
TheResult result = null;
try {  //调用下面上传文件的代码,用类对象接收(result)
result = 上传文件方法(tr);// 先上传文件,如果文件上传成功再保存公告内容
if(null != result && "0".equals(result.getFlag())){ // 主标题
String title = this.getParamNotNnll("title");
//内容
String value=this.getParamNotNnll("crmNoticeManage.contentStr");
byte[] valuebyte = value.getBytes();//......很多内容 Map<String, Object> cemap = new HashMap<String, Object>();
cemap.put("id",userId);  //把ID存到map集合里 User u = los.findeuser(cemap);
String name=u.getName();//作者 根据id获得其他表的数据 ZdcjCelue zdcjCelue=new ZdcjCelue();
zdcjCelue.setTitle(title);//主标题 ....存入对象进行添加
try {
zcService.newCelue(zdcjCelue);
result.setMessage("创建成功!");
result.setFlag("0");
} catch (Exception e) {
result.setFlag("3");
e.printStackTrace();
}
}
} catch (Exception e) {
result.setFlag("3");
e.printStackTrace();
}
outJSONData(JSONUtils.beanToJson(result));
} //开始上传文件咯! /**
* 上传附件
* @return
*/
public TheResult 上传文件方法(TheResult tr) {
String cc="celue"; //图片存在服务器上的路径
String rd="rd";
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
/**页面控件的文件流**/
MultipartFile multipartFile = multipartRequest.getFile("upload"); //upload指的是前端input的name
String fileName=multipartFile.getOriginalFilename();
String folderName=cc+"/"+DateUtil.getDataStringDir();  //产生一天的日期字符串,因为图片有可能重复,防止重复
int fileSize=0;
String stuffixForFile = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
if (!getAllowFileSuffix().contains(stuffixForFile)) {//检查文件是否在允许上传的范围之内
tr.setFlag("1");
tr.setMessage("出于安全性考虑,不允许添加此种格式(."+stuffixForFile+")文件。");
return tr;
}
try {
InputStream is=multipartFile.getInputStream();
fileSize=is.available();
if ((fileSize / 1024) > 1024 * 2) {
tr.setFlag("2");
tr.setMessage("上传文件大于2MB");
return tr;
}
String ip=GlobalUtil.pps.getProperty("FTP.ip");//上传服务器地址
String username=GlobalUtil.pps.getProperty("FTP.username");//用户名
String password=GlobalUtil.pps.getProperty("FTP.password");//密码
FTPUtil.connServer(ip, username, password,"");
FTPUtil.createDir(folderName);
FTPUtil.uploadFile(fileName, is);
} catch (IOException e) {
e.printStackTrace();
tr.setFlag("3");
tr.setMessage("上传文件异常!");
return tr;
}finally{
FTPUtil.closeServer();
}
String url="/"+folderName+"/"+fileName;
tr.setFlag("0");
tr.setMessage("上传成功!");
tr.setShowURL(url);
tr.setRecName(multipartFile.getOriginalFilename());
return tr;
}  //下面还有一个方法需要填上 public static List<String> getAllowFileSuffix() {
if (allowFileSuffix == null || allowFileSuffix.size() < 1) {
String stuffix = "gif,jpg,jpeg,png,bmp,swf,flv,swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb,doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2";
if (allowFileSuffix == null) {
allowFileSuffix = new ArrayList<String>();
}
allowFileSuffix.clear();
for (String stuf : stuffix.split(",")) {
allowFileSuffix.add(stuf);
}
}
return allowFileSuffix;
}  //不要忘记set方法 public static void setAllowFileSuffix(List<String> allowFileSuffix) {
ZdcjCelueAction.allowFileSuffix = allowFileSuffix;
}//至此 已经完成了图片上传。 显示服务器上的图片很简单<img class='img-responsive' src='http://121.41.57.4/images"+comment.coverImg+"'>一定要对应好服务器图片的位置, 上面说过有一个Result类:↓ package com.kinglo.im.util; import java.util.List; /**
* 处理结果
*
* @author tr 2012-07-17
*/
public class TheResult { /**
* 标记 0--成功,1--异常,2--失败
*/
private String flag;
/**
* 返回消息
*/
private String message; /**
* 刷新页面的访问路径
*/
private String showURL;
/**
* 是否关闭当前层(true--是,false--否)
*/
private boolean whetherClose; /**
* 是否刷新页面(true--是,false--否)
*/
private boolean whetherRefresh = true; private String checkbox; private Integer type;
private String userid;
private String subject;
private String senderName;//发送者姓名
private String reciveName;//接受者姓名
private Long sender;//发送者ID
private Long recive;//接收者ID
private String text;
private Integer taskid;
private String sendName;
private String recName;
private String tpid;
private String agentid;
private String iscomplete;
private String username;
public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} private String password;
public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getNeibuqunid() {
return neibuqunid;
} public void setNeibuqunid(String neibuqunid) {
this.neibuqunid = neibuqunid;
} public String getWaibuqunid() {
return waibuqunid;
} public void setWaibuqunid(String waibuqunid) {
this.waibuqunid = waibuqunid;
} private String neibuqunid;
private String waibuqunid;
private String isCallerRbt;
/**
* 当前第几页
*/
private int currPage = 1;
/**
* 当前页显示记录数
*/
private int pageSize = 10; private String companyCode; private String isExtFlag;//是否转分机 private String isJobNumFlag;//是否报工号 private String isJobId;//是否弹屏 private String subaccount;
private String subaccountpwd;
private String voipid;
private String voippwd; public String getTpid() {
return tpid;
} public void setTpid(String tpid) {
this.tpid = tpid;
} public String getFlag() {
return flag;
} public void setFlag(String flag) {
this.flag = flag;
} //这里进行封装get() set()方法 } /**
* 图片上传(这个是另一种方法的action)
*/
@RequestMapping("/uploadImages.do")
public void uploadImages(){
try {
String regExp="jpg|bmp|jpeg|png|gif";
Pattern pattern=Pattern.compile(regExp,Pattern.CASE_INSENSITIVE+Pattern.MULTILINE);
System.out.println("ss:"+uploadFileName);
Matcher matcher=pattern.matcher(uploadFileName);//这个为空if(!matcher.find()){
this.outJSONDataString("{\"error\":1,\"message\":\"请上传正确格式的图片!\"}");}else{
FileInputStream fis=new FileInputStream(upload);//这个也为空
if(fis.available()>1536000){
this.outJSONDataString("{\"error\":1,\"message\":\"每张图片最大不能超过1.5MB!\"}");}else{
String width=this.getParamNotNnll("width").trim();
String height=this.getParamNotNnll("height").trim();
String title=this.getParamNotNnll("title").trim();
String align=this.getParamNotNnll("align").trim();
String url=request.getRequestURL().toString();
String path="";//getServletContext().getRealPath("").replace("\\", "\\\\")+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf("."));
String imgPath="";//url.substring(0, url.indexOf(getRequest().getContextPath()))+getRequest().getContextPath()+"/noticedirectory/"+Context.getCurrentUser().getCompanyCode()+"/temp/"+DateUtil.getDateToString(new Date())+uploadFileName.substring(uploadFileName.lastIndexOf("."));
File file =new File(path);
if(!file.exists()){try {file.createNewFile();} catch (Exception e) {File dir=new File(file.getParent());dir.mkdirs();file.createNewFile();}}
FileOutputStream fos=new FileOutputStream(file);
int len=0;byte[] b=new byte[1024];
while((len=fis.read(b))!=-1){fos.write(b, 0, len);}fis.close();fos.flush();fos.close();
this.outStringData("{\"error\":0,\"url\":\""+imgPath+"\",\"path\":\""+path+"\",\"width\":\""+width+"\",\"height\":\""+height+"\",\"title\":\""+title+"\",\"align\":\""+align+"\"}");}}
} catch (Exception e) {e.printStackTrace();}}

根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)的更多相关文章

  1. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  2. php form 图片上传至服务器上

    本文章也是写给自己看的,因为写的很简洁,连判断都没有,只是直接实现了能上传的功能. 前台: <form action="upload.php" method="PO ...

  3. 使用canvas给图片添加水印, canvas转换base64,,canvas,图片,base64等转换成二进制文档流的方法,并将合成的图片上传到服务器,

    一,前端合成带水印的图片 一般来说,生成带水印的图片由后端生成,但不乏有时候需要前端来处理.当然,前端处理图片一般不建议,一方面js的处理图片的方法不全,二是有些老版本的浏览器对canvas的支持度不 ...

  4. h5 input file ajax实现文件上传

    <input type="file" accept="image/*" height="0" class="file_inp ...

  5. ckeditor如何能实现直接粘贴把图片上传到服务器中?

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  6. Express+MySQL实现图片上传到服务器并把路径保存到数据库中

    demo准备:mysql5.7.20 express4.0 处理图片文件的中间件Multer 先搭建服务器并展示html页面 const express = require("express ...

  7. word图片上传到服务器

    参考:http://blog.ncmem.com/wordpress/2019/08/07/word%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0%e5%88%b0%e6%9 ...

  8. 模板不存在:./xx 错误位置 FILE: LINE:110 (thinkphp上传至服务器后模板无法解析原因)

    thinkphp上传至服务器后模板无法解析原因 前几日做好的响应式静态页面上传至虚拟空间,打开网址地址出现: 模板不存在:./App/Admin/View/Config/customerService ...

  9. input(file)样式修改及上传文件名显示

    实现思路: a标签包裹input元素 设置a标签为上传按钮的样式,相对定位 设置input为透明,绝对定位,覆盖到a上面 效果:看到的按钮是a的样式,点击时实际是点击input元素.样式和功能都具备 ...

随机推荐

  1. 百度地图api根据地图缩放等级显示不同的marker点,功能二

    功能一里面有marker点后台的代码 根据地图的缩放等级显示不同marker点的坐标JSP代码 <%@ page language="java" contentType=&q ...

  2. STL学习 - map

    C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明    1   头文件 #include <map> 2  ...

  3. 树型hierarchyid类型

    --查询所有下级 DECLARE @BOSS hierarchyid --查询所有上级 DECLARE @Employee hierarchyid

  4. 答:SQLServer DBA 三十问之三:有哪些操作会使用到TempDB;如果TempDB异常变大,可能的原因是什么,该如何处理

    3. 有哪些操作会使用到TempDB:如果TempDB异常变大,可能的原因是什么,该如何处理: tempdb的用途:1)存储专用和全局临时变量,不考虑数据库上下文: 2)与Order by 子句,游标 ...

  5. 跨境B2B网站

    大家都在谈跨境电商,其实现在比较火的应该是跨境B2B网站,它被很多的业内人士所看好,并且也取得了很喜人的成绩,无论是经营方面还是品牌打造,都从多方向带动了行业的发展. 跨境B2B网站 一.从买方市场向 ...

  6. 解决zookeeper报错[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@362] - Exception causing close

    zookeeper.out报错: 2016-12-10 18:05:46,958 [myid:3] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181 ...

  7. MySQL事件 Events

    MySQL事件 Events   一.关键字: EVENT   二.语法: CREATE EVENT? [IF NOT EXISTS ] //如果不存在则创建 event_name? ON SCHED ...

  8. 解决错误 Cannot await in the body of a catch clause

      解决错误 Cannot await in the body of a catch clause   static async Task f() { ExceptionDispatchInfo ca ...

  9. sys模块和os模块,利用sys模块生成进度条

    sys模块import sysprint(sys.argv)#sys.exit(0)             #退出程序,正常退出exit(0)print(sys.version)       #获取 ...

  10. python的路径

    原来可以这么用和那么用 os.mkdir('d:\\su\\help1') os.mkdir('d:/su/help') 为啥提供俩种呢 真乱