开发者社区> 冬至饮雪> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:   今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中:   完成这个功能需要两个步,第一是图片上传,第二是保存到数据库,在完成这个功能时候碰到了一些小问题,所以把完整的步骤...
+关注继续查看

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

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

  第一步,在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类型.

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SSH框架总结
SSH框架总结
0 0
Linux网络服务总结,复习看这个很方便(DHCP、FTP、SSH、DNS、NFS、PXE)
Linux网络服务总结,复习看这个很方便(DHCP、FTP、SSH、DNS、NFS、PXE)
0 0
Servlet、SSH、SSM及SpringBoot总结&投票
往期推送分别利用Servlet、SSH、SSM及SpringBoot技术实现了简单的登录、注册、增、删、改、查等功能,并介绍了基本技术原理,目的即是通过简单的Java项目实例对以上技术原理更深入的了解、学习,从而为复杂的系统项目的开发奠定基础以及面试时更能够对JavaWeb技术的把控。
0 0
局域网内使用ssh连接两台计算机总结
因为家里有两台电脑,一个centos7 系统,一个Mac,都是笔记本,感觉两个拿来拿去的用太麻烦了,所以就想用ssh连接cenots7 的电脑,这样就没那么麻烦了。欢迎大家指正 配置静态ip centos7 配置 进入network-scripts目录并且查看该目录下存在的ifcfg-xx文件...
1472 0
Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误
25. 集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManag
4201 0
ssh整合问题总结--运行项目时报java.lang.StackOverflowError(堆栈溢出)异常
  今天在整合ssh项目中,碰到一个异常,当我提交购物车数据到订单时,浏览器报了一个这样的异常.   当时,我就吓坏了.尼玛,这不是内存溢出了吗?吓得我赶紧去检查了每一个有遍历语句的代码,结果没有发现一个死循环,折腾了两个多小时,最后终于发现了问题,简直让人抓狂,原因竟然是我在实体类,order(订单),orderItem(订单项)中都重写了ToString()方法.
507 0
ssh 安全 之 密钥登录
ssh 安全 之 密钥登录
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
附件下载测试
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载