SSH框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然后页面展示图片, 算是好好把上传功能给过了一遍了,当然还有什么H5上传,分片上传等等这里就不提了,适用于初学上传文件的例子。
创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、郑州服务器托管、云服务器、网页空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网页空间、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
使用Bootstrap fileinput.js上传控件,
GitHub源码下载:https://github.com/kartik-v/b...
页面上需要引入的CSS和JS
效果还是不错的
页面代码(参考)
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 Listfile; // 上传文件名集合 private List fileFileName; // 上传文件内容类型集合 private List 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 getFile() { return file; } public void setFile(List file) { this.file = file; } public List getFileFileName() { return fileFileName; } public void setFileFileName(List fileFileName) { this.fileFileName = fileFileName; } public List getFileContentType() { return fileContentType; } public void setFileContentType(List 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下的项目指定的文件夹里了
页面展示(这个部分就各有各有写法了)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款