java web文件上传详解_java web图片上传和文件上传实例详解
java web图片上传和文件上传
图片上传和文件上传本质上是一样的,图片本身也是文件。文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作。
注意事项
1.form表单一定要写属性enctype="multipart/form-data"
2.为了能保证文件能上传成功file控件的name属性值要和你提交的控制层变量名一致,
例如空间名是file那么你要在后台这样定义
private File file; //file控件名
private String fileContentType;//图片类型
private String fileFileName; //文件名
1.jsp页面
pageEncoding="UTF-8"%>
文件上传
1.页面数据需要提交的Controller
package com.cpsec.tang.chemical.action;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import com.cpsec.tang.chemical.biz.LunboBiz;
import com.cpsec.tang.chemical.entity.Image;
import com.opensymphony.xwork2.ActionSupport;
@Controller("lunboAction")
public class LunboAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
@Resource(name="lunboBiz")
private LunboBiz lunboBiz;
private Image image;
private File file; //file控件名
private String fileContentType;//图片类型
private String fileFileName; //文件名
private Integer number;
public String findImage(){
image=lunboBiz.findImage();
return SUCCESS;
}
public String alterImage(){
image=lunboBiz.findImage();
return SUCCESS;
}
public String alterImage1(){
HttpServletRequest request = ServletActionContext.getRequest();
String root = request.getRealPath("/upload");//图片要上传到的服务器路径
String names[]=fileFileName.split("\\.");
String fileName="";
if(names.length>=1){
fileName=getRandomString(20)+"."+names[names.length-1];
}
String picPath="upload/"+fileName;//图片保存到数据库的路径
File file1=new File(root);
try {
FileUtils.copyFile(file,new File(file1,fileName));
}
} catch (IOException e) {
e.printStackTrace();
}
return SUCCESS;
}
/*获取一条随机字符串*/
public String getRandomString(int length) { //length表示生成字符串的长度
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
}
这是通过复制的方式上传文件,还有其他方式
@Controller("contractAction")
public class ContractAction extends ActionSupport {
private final static String UPLOADDIR = "/files";//文件上传的路径,在webContent下建立
private File file; //input控件名一定为file
//上传文件名集合
private String fileFileName;
//上传文件内容类型集合
private String fileContentType;
private String filename;
public String upload() throws FileNotFoundException,IOException{
String path=uploadFile();//文件保存数据库的路径
return SUCCESS;
}
//执行上传功能
@SuppressWarnings("deprecation")
public String uploadFile() throws FileNotFoundException,IOException {
try {
InputStream in = new FileInputStream(file);
String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);
File fileLocation = new File(dir);
//此处也可以在应用根目录手动建立目标上传目录
if(!fileLocation.exists()){
boolean isCreated = fileLocation.mkdir();
if(!isCreated) {
//目标上传目录创建失败,可做其他处理,例如抛出自定义异常等,一般应该不会出现这种情况。
return null;
}
}
// this.setFileFileName(getRandomString(20));
String[] Name=this.getFileFileName().split("\\.");
String fileName=getRandomString(20)+"."+Name[Name.length-1];
this.setFileFileName(fileName);
System.out.println(fileName);
File uploadFile = new File(dir,fileName);
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer,length);
}
in.close();
out.close();
return UPLOADDIR.substring(1)+"\\"+fileFileName;
} catch (FileNotFoundException ex) {
return null;
} catch (IOException ex) {
return null;
}
}
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i
int number=random.nextInt(62);
sb.append(str.charAt(number));
}
return sb.toString();
}
}
除了单图上传还有多图上传,原理都是一样的
package com.cpsec.tang.chemical.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 javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 多文件上传
*/
public class FilesUploadAction extends ActionSupport {
//上传文件存放路径
private final static String UPLOADDIR = "/upload";
//上传文件集合
private List file;
//上传文件名集合
private List fileFileName;
//上传文件内容类型集合
private List fileContentType;
public List getFile() {
return file;
}
public void setFile(List file) {
this.file = file;
}
public List getFileFileName() {
return fileFileName;
}
public void setFileFileName(List fileFileName) {
this.fileFileName = fileFileName;
}
public List getFileContentType() {
return fileContentType;
}
public void setFileContentType(List fileContentType) {
this.fileContentType = fileContentType;
}
public String uploadform() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
String webpath=null;//上传路径
for (int i = 0; i < file.size(); i++) {
//循环上传每个文件
uploadFile(i);
webpath="upload/"+this.getFileFileName().get(i);
}
return "SUCCESS";
}
//执行上传功能
private String uploadFile(int i) throws FileNotFoundException,IOException {
try {
InputStream in = new FileInputStream(file.get(i));
String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR);
File fileLocation = new File(dir);
//此处也可以在应用根目录手动建立目标上传目录
if(!fileLocation.exists()){
boolean isCreated = fileLocation.mkdir();
if(!isCreated) {
//目标上传目录创建失败,一般应该不会出现这种情况。
return null;
}
}
String fileName=this.getFileFileName().get(i);
File uploadFile = new File(dir,fileName);
OutputStream out = new FileOutputStream(uploadFile);
byte[] buffer = new byte[1024 * 1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer,length);
}
in.close();
out.close();
return uploadFile.toString();
} catch (FileNotFoundException ex) {
return null;
} catch (IOException ex) {
return null;
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
java web文件上传详解_java web图片上传和文件上传实例详解相关推荐
- 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。
基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件. DICOM是医学图像和信息的数字化标准,可用于将医学影像数据.诊断报告等信息在医疗领域进行传输.分享和分析.而常 ...
- dxf文件解析,g代码解析,图片解析C#工程文件
dxf文件解析,g代码解析,图片解析C#工程文件 1.解析完成的图形坐标自动保存,通过通信接口直接下发即可 2.可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统 ID:693000659 ...
- dxf文件解析,g代码解析,图片解析C#工程文件 可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统
dxf文件解析,g代码解析,图片解析C#工程文件 1.解析完成的图形坐标自动保存,通过通信接口直接下发即可 2.可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统 ID:483000659 ...
- java web编码详解_java web 开发 编码问题详解
java web 开发 编码问题详解 浏览器 IE/FireFox ------------->Servlet容器-------------------------->显示页面 编码 ...
- java 跨域上传_java后台图片跨域上传图片 文件
发送方 @ResponseBody @RequestMapping(value="/imgUpLoadNewOneKuaYu")public String imgUpLoadNew ...
- java dispatcher详解_Java Web开发详解:RequestDispatcher接口
12.6.1 RequestDispatcher接口 RequestDispatcher 对象由 Servlet 容器创建,用于封装一个由路径所标识的服务器资源.利用RequestDispatche ...
- java富文本传图片_使用富文本编辑器上传图片实例详解
富文本编辑器上传图片 一.导入kindeditor的js 二.将kindeditor与一个文本域textarea进行关联,即用textarea初始化一个kindeditor对象 itemaddedit ...
- java编译遇到的问题与解决_java web开发中遇到的问题及解决方案(个人学习日志,持续更新)...
2012.05.02 星期三 1.问题:导入的新工程,名字上出现感叹号. 原因:工程的jar包libraries需要重新加载. 解决:工程右键-->properties-->Java ...
- python编程入门与案例详解课后题答案-Python入门之三角函数sin()函数实例详解
描述 sin()返回的x弧度的正弦值. 语法 以下是sin()方法的语法: importmath math.sin(x) 注意:sin()是不能直接访问的,需要导入math模块,然后通过math静态对 ...
最新文章
- [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]
- Windows下使用gvim格式化xml文件
- Jmeter之线程组详解
- 算法分析 运动员循环赛_「98跑」大众跑者的训练比专业运动员更累!
- cacti及其相关插件的安装
- 前端学习(1335):mongoDB导入数据
- flask 框架第一天学习笔记
- hadoop fs命令
- 人大金仓数据库sql语句_数据库SQL语句大全——最常用的SQL语句
- 在Sharepoint Designer 2007 中加入定制的工作流动作
- Netty工作笔记0042---Netty入门--编写客户端
- android 键盘遮盖输入框_Android软键盘遮住输入框的解决方法终极适配
- 利用vbs读取XML中的某个指定子叶节点 (转)
- 多元时间序列因果关系分析
- 使用 Vue 和 epub.js 制作电子书阅读器
- matlab绘制动图
- 弹窗的点击空白关闭,背景虚化,防止滚动穿透
- python求图形面积_如何使用python语言中的if语句实现求取图形面积
- whm面板降mysql_在cPanel&WHM 78版上可以取消阻止MySQL 5.5
- Nacos服务---主流配置中心对比
热门文章
- 解释器实例之算数计算(四)
- python学习链接
- Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
- Exchange 2010 SP2 新功能
- AIR切换SDK版本时遇到的问题
- Visual Studio 2010 Beta 2 公开下载地址
- ocs 2007 r2 服务体验
- 8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心
- Akka源码分析-Akka Typed
- HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)