ssh整合问题总结--在添加商品模块实现图片(文件)的上传

小编 2026-07-14 阅读:289 评论:0
  今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模...

  今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中:

ssh整合问题总结--在添加商品模块实现图片(文件)的上传

  完成这个功能需要两个步,第一是图片上传,第二是保存到数据库,在完成这个功能时候碰到了一些小问题,所以把完整的步骤记录一下:

  第一步,在form标签下,添加一个属性,enctype="multipart/form-data",  我刚开始脑袋短路将这个属性写到了type为file的那么input标签下,结果死活提交不了表单数据,差点自杀,还有要注意的一点就是<input type="file" name="upload"/>中的name的命名要与action中File的对象名保持一致.(注意紫色代码部分)

<form action="${pageContext.request.contextPath }/adminGoods_addGoods.action" method="post" enctype="multipart/form-data">    <input type="file" name="upload"/></form>

处理Action中(AdminGoodsAction.java):

package com.wang.shop.adminGoods.action;import java.io.File;import java.io.IOException;
import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.wang.shop.admin.entity.Admin;import com.wang.shop.goods.entity.Goods;import com.wang.shop.goods.service.GoodsService;import com.wang.shop.util.PageBean;public class AdminGoodsAction extends ActionSupport implements        ModelDriven<Goods> {    private GoodsService goodsService;    private Goods goods = new Goods();        private int page;    // 文件上传需要的参数    private File upload;// 上传的文件    private String uploadFileName;//上传的文件名陈    private String uploadContentType;// 接收文件上传的MIME类型    /**     * 添加商品     * @return     */    public String addGoods() {        System.out.println(uploadFileName);        goods.setGoodsPicture(uploadFileName);        if (upload != null) {            // 获得文件上传的磁盘绝对路径            try {                String realPath = ServletActionContext.getServletContext()                        .getRealPath("/images");                // 创建一个文件                File diskFile = new File(realPath + File.separator                        + uploadFileName);                // 文件上传,使用FileUtils工具类                FileUtils.copyFile(upload, diskFile);            } catch (IOException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }        System.out.println(goods);        goodsService.saveGoods(goods);        return "addGoods_succ";    }    public void setGoodsService(GoodsService goodsService) {        this.goodsService = goodsService;    }    @Override    public Goods getModel() {        // TODO Auto-generated method stub        return goods;    }    public void setUpload(File upload) {        this.upload = upload;    }    public void setUploadFileName(String uploadFileName) {        this.uploadFileName = uploadFileName;    }    public void setUploadContentType(String uploadContentType) {        this.uploadContentType = uploadContentType;    }    public void setPage(int page) {        this.page = page;    }}

  注意,我项目中存放图片的路径是WebRoot下的images文件夹,执行完操作后,如果发现该文件夹中没有出现你所上传的图片,先不要怀疑代码是否错了,应该先去tomcat安装目录下找到该项目的images文件夹,图片会上传到那里,在eclipse的images文件夹下可能会找不到,不过不用担心,只要tomcat中上传成功了,就可以用了.

  需要注意的地方有以下几点:

  1:action中需要定义三个属性,上传的文件File,上传的文件名,和上传文件的MIME类型.

  2.File类型的对象名需要和jsp中type="file"的input的name属性值相同.

  3.String类型文件名=File对象名+FileName.

  4.可以通过String realPath = ServletActionContext.getServletContext().getRealPath("/images");获得当前项目的绝对路径

  5.FileUtils的copyFile方法,可以简便的实现文件从一个目录上传到另一个目录,其中第一个参数是源文件File类型对象,第二个参数是目标文件File类型对象.这里其实就模拟了从本地上传到服务器的过程,注意参数类型都是File类型.

 

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表