码迷,mamicode.com
首页 > Web开发 > 详细

表单上传图片

时间:2019-07-30 11:17:44      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:port   url   context   struts   classname   close   max   shang   作用   

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();

}

表单上传图片

标签:port   url   context   struts   classname   close   max   shang   作用   

原文地址:https://www.cnblogs.com/ycq-qiang/p/11268287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!