表单上传图片
Posted ycq-qiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表单上传图片相关的知识,希望对你有一定的参考价值。
1.表单
1.在form表单中加入属性enctype="multipart/form-data"
2.给一个input type类型为file 的输入框还有给name
2.配置
在struts.xml中配置
<!-- 设置struts2上传的文件大小,默认情况下的大小是2M ,默认单位是B,目前允
许上传的最大为100M -->
<constant name="struts.multipart.maxSize" value="104857600"/>
3.controller/action(控制层)
1.接收图片的参数定义规则:
文件名称的接收:必须定义的是全局变量,表单中的file框中的name值加上FileName;
2.接收文件内容的参数
private File photo;属性名和input中的name值一样。
4.文件的上传操作
1.文件重命名
2.文件的上传.
package com.fh.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;
import org.apache.struts2.ServletActionContext;
/**
* @ClassName: FileUpload
* @Description: TODO(这里用一句话描述这个类的作用)
* @author shangfeng
* @date 2018-6-24 上午11:00:46*/
public class FileUpload
private String photoFileName;
private File photo;
public void uploadFile()
System.out.println(photoFileName);
// 第一大步就是给文件重命名
// 先获取文件的后缀名
String suffix =
photoFileName.substring(photoFileName.lastIndexOf("."));
System.out.println(suffix);
// 获取一个32位的UUID
String uuid = UUID.randomUUID().toString().replace("-", "");
System.out.println(uuid);
String newFileName = uuid + suffix;
// 第二大步,就是将文件上传到指定文件夹中。
// 1.获取项目的发布路径
String realPath =
ServletActionContext.getServletContext().getRealPath(
"/");
System.out.println(realPath);
// 读取服务器上的文件目录
File filemdk = new File(realPath + "/" + "photo");
if (!filemdk.exists())
filemdk.mkdirs();
// 输入流
FileInputStream fis = null;
// 输出流FileOutputStream fos = null;
try
// 获取输入流
fis = new FileInputStream(photo);
// 构建输出流
fos = new FileOutputStream(filemdk + "/" + newFileName);
byte[] b = new byte[fis.available()];
fis.read(b);
fos.write(b);
catch (Exception e)
e.printStackTrace();
finally
try
if (fis != null)
fis.close();
if (fos != null)
fos.close();
catch (IOException e)
e.printStackTrace();
public String getPhotoFileName()
return photoFileName;
public void setPhotoFileName(String photoFileName)
this.photoFileName = photoFileName;
public File getPhoto()
return photo;
public void setPhoto(File photo)
this.photo = photo;
5.项目中的图片上传
1.新增表单要加入图片上传功能。
2.列表要进行图片展示
3.修改表单要加入图片的回显展示和新图片的上传功能。
action类中还要加入图片的删除造作
String realPath = ServletActionContext.getServletContext()
.getRealPath("/");
String oldFilePath = game.getCimgurl();
File file = new File(realPath + oldFilePath);
if (file != null)
file.delete();
以上是关于表单上传图片的主要内容,如果未能解决你的问题,请参考以下文章
php表单上传图片到七牛云存储并返回地址……求具体流程~有代码更好