SSH框架实现表单上传图片实例代码
程序员文章站
2024-02-26 19:40:46
ssh框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然...
ssh框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然后页面展示图片, 算是好好把上传功能给过了一遍了,当然还有什么h5上传,分片上传等等这里就不提了,适用于初学上传文件的例子。
使用bootstrap fileinput.js上传控件,
github源码下载:...
页面上需要引入的css和js
<link rel="stylesheet" type="text/css" href="css/fileinput.min.css" rel="external nofollow" > <script type="text/javascript" src="js/fileinput.min.js"></script>
效果还是不错的
页面代码(参考)
<form action="uploadaction" method="post" enctype="multipart/form-data" id="myform"> <!-- 图片标题 --> <input class="form-control" type="text" name="img_title" id="img_title" size="100" value="请输入图片名称" style="color: #999999;" onfocus='if(this.value=="请输入图片名称"){this.value="";};' onblur='if(this.value==""){this.value="请输入图片名称";};'> <br /> <!-- 下拉框 --> <select name="img_state"> <option selected="selected">请选择审核状态</option> <c:foreach items="${statelist }" var="sl"> <option value="${sl.s_id }">${sl.s_statename}</option> </c:foreach> </select> <br /> <br /> <!-- 图片上传控件 --> <input type="file" name="file" id="file" class="file" /> <br> </form> <center> <a href="executeimages" rel="external nofollow" class="btn btn-success">返回图集</a> </center>
uploadaction(myeclipse的web-info下创建uploadfile文件夹)
这里没有用smartupload或者是别的上传jar包
package com.action; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.util.list; import org.apache.struts2.servletactioncontext; import enity.cms_images; import enity.cms_state; import sql_implements.images_sql_implem; import com.opensymphony.xwork2.actionsupport; @suppresswarnings("serial") public class uploadaction extends actionsupport { /** * 这里集合形式输入到流,防止上传重复文件,减少服务器压力 */ private string img_title;// 图片标题 private int img_state;// 状态 // 上传文件存放路径 private final static string uploadaddres = "/uploadfile"; // 上传文件集合泛型为file对象 private list<file> file; // 上传文件名集合 private list<string> filefilename; // 上传文件内容类型集合 private list<string> filecontenttype; cms_images images = new cms_images(); cms_state state = new cms_state();// 实例状态类 private images_sql_implem isi; cms_imagesaction cia; public cms_imagesaction getcia() { return cia; } public void setcia(cms_imagesaction cia) { this.cia = cia; } public int getimg_state() { return img_state; } public void setimg_state(int img_state) { this.img_state = img_state; } public cms_state getstate() { return state; } public void setstate(cms_state state) { this.state = state; } public images_sql_implem getisi() { return isi; } public void setisi(images_sql_implem isi) { this.isi = isi; } public static string getuploadaddres() { return uploadaddres; } public cms_images getimages() { return images; } public void setimages(cms_images images) { this.images = images; } public string getimg_title() { return img_title; } public void setimg_title(string img_title) { this.img_title = img_title; } public list<file> getfile() { return file; } public void setfile(list<file> file) { this.file = file; } public list<string> getfilefilename() { return filefilename; } public void setfilefilename(list<string> filefilename) { this.filefilename = filefilename; } public list<string> getfilecontenttype() { return filecontenttype; } public void setfilecontenttype(list<string> filecontenttype) { this.filecontenttype = filecontenttype; } // 上传方法 public string execute() throws exception { // 打印文件名称 system.out.println("文件名称:" + this.getfilefilename()); for (int i = 0; i < file.size(); i++) { // 循环上传每个文件 uploadfile(i); } /** * 这里有bug 想每次添加完后能在查询一遍下拉框的值 */ // cia.execute(); return "uploadsuccess"; } // 调用执行上传功能 @suppresswarnings("deprecation") public void uploadfile(int i) throws filenotfoundexception, ioexception { try { inputstream in = new fileinputstream(file.get(i)); // servletactioncontext对象响应获取实际文件地址,getrealpath已经废弃不推荐用了 string dir = servletactioncontext.getrequest().getrealpath( uploadaddres); system.out.println("服务器路径:" + dir); // 获取文件名称 string filename = this.getfilefilename().get(i); // 路径和文件名丢进file对象里 file uploadfile = new file(dir, filename); // 输出流 outputstream out = new fileoutputstream(uploadfile); // 设置文件大小1mb byte[] buffer = new byte[1024 * 1024]; int length; // 用循环从流中读取文件的大小 while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } // 设置图片标题和全路径 images.setimg_title(img_title); string imgurl = dir + "/" + filename; // 将全路径截取为相对路径 string strurl = imgurl.substring(32); images.setimg_url(strurl); // 设置状态的id,并将id对象传入 state.sets_id(img_state); images.setimg_state(state); // 添加图片的信息 int num = isi.addimg(images); system.out.println("是否上传了信息:" + num); // 关闭输入流输出流,释放内存 in.close(); out.close(); } catch (exception e) { e.printstacktrace(); } } }
演示效果图
图片上传到了tomcat下的项目指定的文件夹里了
页面展示(这个部分就各有各有写法了)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。