欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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>

效果还是不错的

SSH框架实现表单上传图片实例代码

SSH框架实现表单上传图片实例代码

页面代码(参考)

  <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();
    }
  }
}

演示效果图

SSH框架实现表单上传图片实例代码

图片上传到了tomcat下的项目指定的文件夹里了

SSH框架实现表单上传图片实例代码

页面展示(这个部分就各有各有写法了)

SSH框架实现表单上传图片实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。