SSH表单上传图片实例

回家种地
• 阅读 4146

SSH框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然后页面展示图片, 算是好好把上传功能给过了一遍了,当然还有什么H5上传,分片上传等等这里就不提了,适用于初学上传文件的例子。

使用Bootstrap fileinput.js上传控件,
GitHub源码下载:https://github.com/kartik-v/b...

页面上需要引入的CSS和JS

<link rel="stylesheet" type="text/css" href="css/fileinput.min.css">
<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" 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表单上传图片实例

点赞
收藏
评论区
推荐文章
皕杰报表(关于如何上传和下载文件到数据库)
在皕杰报表中文件是否可以上传到数据库中,当然是可以的。然后在附件上传和下载中,设置相对路径或绝对路径,文件名称,文件类型和上传的空值条件(上传的大小,默认限制是5120kb和满足什么条件时上传)。在下载中选择相对路径或绝对路径,填写下载链接名称和下载文件名称。填报操作时有三个函数:filedata、filename、filepath。filedata:获取文
Easter79 Easter79
4年前
springboot项目文件上传(绝对路径)并使用tomcat虚拟路径进行图片预览
前言项目中,需要上传文件,但是可能会比较多,所以不能放入项目目录中,需要指定目录并按顺序放置。并且:还需要这些数据可以预览(图片等)。那么问题就是:上传完成之后我存入服务器,并拿到绝对路径,存入数据库,那么,前台访问的时候请求地址肯定是:ip端口项目名,那么该如何获取资源呢?正文:1\.文件上传到指定目录(服务
ThinkPHP V5.0 图片上传base64
/单图上传@returnbool|mixed|string/protectedfunctionuploadingqrcode($images'',$name'')if(empty($images))$thisresult($images,0,'图片错误');if(pregmatch('/^(data:\simag
Easter79 Easter79
4年前
SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑
本文源码GitHub地址:知了一笑https://github.com/cicadasmile/springbootbase一、文件上传文件上传是项目开发中一个很常用的功能,常见的如头像上传,各类文档数据上传等。SpringBoot使用MultiPartFile接收来自表单的file文件,然后执
Stella981 Stella981
4年前
Play 2.0 用户指南 - 文件上传 -- 针对Scala开发者
   处理文件上传   在form中指定multipart/formdata属性上传文件   上传文件的标准方式是指定form的一个特殊属性multipart/formdata,可以让你混合表单数据和表单文件附件。   开始编写HTML表单:@form(actionrou
Stella981 Stella981
4年前
Mac python3 环境下 完善pdf转jpg脚本
由于样本图片数据都是保存在pdf里,想拿到样本必须先把图片从pdf中提取出来,算是数据清洗中的一点小小的积累吧。这里不得不吐槽一下公司存储图片的机制,业务员把jpg格式的照片放到word里,然后用工具把word保存为pdf,最后上传到公司服务器里,这简介反人类,不但丢失了图片头文件信息,还造成后期数据转换的大量时间资源的浪费,可能pdf格式会小一
Stella981 Stella981
4年前
SpringBoot2.0 基础案例(14):基于Yml配置方式,实现文件上传逻辑
本文源码GitHub地址:知了一笑https://github.com/cicadasmile/springbootbase一、文件上传文件上传是项目开发中一个很常用的功能,常见的如头像上传,各类文档数据上传等。SpringBoot使用MultiPartFile接收来自表单的file文件,然后执
Wesley13 Wesley13
4年前
PHP 文件上传的原理及案例分析
原理将客户端文件上传至服务器端,在服务器端临时存储,再将服务器端临时存储的文件移至指定位置实现文件上传需要的知识点:前端页面1.form表单必须是用post发送方式,因为get会将参数带到url中,而上传的文件转换后字符会很长,而且也是为了安全性2.form表单需要使用enctype
Easter79 Easter79
4年前
Springboot框架实现图片上传显示并保存地址到数据库
1.在application.properties.xml中配置SpringBoot框架实现图片上传显示并保存地址到数据库springboot上传文件大小限制spring.http.multipart.maxfilesize200MBspring.http.multi
Stella981 Stella981
4年前
Fastdfs安装_nginx进行图片动态压缩
说明1.因为上传的图片较大,部分页面直接引用图片地址,则造成页面加载缓慢问题。2.考虑到服务器空间问题,我们没有进行上传缩略图。仅仅是上传了原图3.为了优化页面加载图片的时间问题,所以对图片进行动态缩放。PS:如果访问量较高,建议进行存储缩略图图片缩放采用nginx的http\_image\_filter\_module
Stella981 Stella981
4年前
Javascript验证上传图片大小[前台处理]
需求分析:在做上传图片的时候,如果不限制上传图片大小,后果非常的严重。那么我们怎样才可以解决一个棘手的问题呢?有两种方式:1)后台处理:也就是AJAXPOST提交到后台,把图片上传到服务器上,然后获得该图片大小做处理。2)前台处理:也就是利用Javascript获取该图片大小。显然第一种方式,很不好。因为需要把文件先上传到
回家种地
回家种地
Lv1
要努力呀,为了想要的生活。
文章
3
粉丝
0
获赞
0