ssh整合问题总结--在添加商品模块实现图片(文件)的上传
今天在做毕设(基于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整合问题总结--在添加商品模块实现图片(文件)的上传的更多相关文章
- 黏包-黏包的成因、解决方式及struct模块初识、文件的上传和下载
黏包: 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包. 只有TCP协议中才会产生黏包,UDP协议中不会有黏包(udp协议中数 ...
- python使用ftplib模块实现FTP文件的上传下载
python已经默认安装了ftplib模块,用其中的FTP类可以实现FTP文件的上传下载 FTP文件上传下载 # coding:utf8 from ftplib import FTP def uplo ...
- 第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)
目录 手册地址: before_insert(新增之前的操作) 要实现的功能 思路 触发条件: 1. 控制器里必须要调用模型的save()方式保存数据,用insert()触发不了勾子函数的 2. 模型 ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
- 在附件管理模块中增加对FTP 上传和预览的支持
在之前介绍的附件管理模块里面<Winform开发框架之通用附件管理模块>以及<Winform开发框架之附件管理应用>,介绍了附件的管理功能,通过对数据库记录的处理和文件的管理, ...
- Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载
Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载 2018年5月26日 19:03 阅读 375 评论 7 我本地和服务器的连接一直使用的是 Xshell 5,而在与服务 ...
- ssh 下载文件以及上传文件到服务器
https://blog.csdn.net/jackghq/article/details/64124062 scp john@192.168.1.100:~/Desktop/MHN_error_so ...
- SSH深度历险记(九) Struts2+DWZ+Uploadify多文件(文件和图片等。)上传
在gxpt_uas系统,为了实现文件(文件和图片等.,灵活配置)批量上传到mongodb,在学习的过程中,知道mongodb,功能,实现思路:在DWZ的基础上參考官方的实例结合现有的GXPT来实现,期 ...
- Python之requests模块-大文件分片上传
最近在做接口测试时,拿到一个分片上传文件的接口,http接口请求头中的Content-Type为multipart/form-data.需要在客户端将大文件分片成数据块后,依次传给服务端,由服务端还原 ...
随机推荐
- pythonchallenge 解谜 Level 1
得到第一关地址后可以进行第一关的解析了. 看起来好神秘的样子.但是也就是把字母 k 变成 m , o 变成 q ,e 变成 g.将字母对应的ASCII的值+2就行了. #-*- coding:utf- ...
- bootstrap基本模板
<!DOCTYPE html><!--html5文档格式--> <html lang="zh-CN"><!--申明语言是中文简体--> ...
- FizzBuzzWhizz游戏的高效解法
最近比较火的一道题(传送门),看见园友们的谈论(传送门1 传送门2),都是从1到100的扫描,我想说说的另一种想法. 可以把这道题转换成给100个人发纸牌的游戏,每人所报的就是纸牌上写的东西. 纸牌发 ...
- 让代码重构渐行渐远系列(3)——string.Equals取代直接比较与非比较
重构背景及原因 最近由于项目组的人员在不断扩充,导致项目中代码风格各异,大有百花齐放甚至怒放之势.考虑到团队的生存与发展,经过众人多次舌战之后,最终决定项目组根据业务分成几个小分队,以加强团队管理与提 ...
- CQOI 2016 k远点对
题目大意:n个点,求第k远的点对的距离 KD树裸题 注意要用堆维护第k远 #include<bits/stdc++.h> #define ll unsigned long long #de ...
- 可在广域网部署运行的QQ高仿版 -- GGTalk总览
(最新版本:V5.5,2016.12.06 增加对MySQL数据库的支持.) (android移动端:2015.09.24 最初发布 ,2016.11.25 最后更新) GGTalk(简称GG)是 ...
- ASP.Net MVC开发基础学习笔记:五、区域、模板页与WebAPI初步
一.区域—麻雀虽小,五脏俱全的迷你MVC项目 1.1 Area的兴起 为了方便大规模网站中的管理大量文件,在ASP.NET MVC 2.0版本中引入了一个新概念—区域(Area). 在项目上右击创建新 ...
- Redis系列(三)-Redis发布订阅及客户端编程
阅读目录 发布订阅模型 Redis中的发布订阅 客户端编程示例 0.3版本Hredis 发布订阅模型 在应用级其作用是为了减少依赖关系,通常也叫观察者模式.主要是把耦合点单独抽离出来作为第三方,隔离易 ...
- Servlet程序中玩验证码
验证码思想:所谓验证码就是产生若干随机数,存放到session中,然后在servlet中获取session中的该值与页面输入值相比较,进而判断正误. 产生验证码的方法: 随机数放在图片中,封装为一 ...
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...