博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2的简单的文件上传
阅读量:7089 次
发布时间:2019-06-28

本文共 3456 字,大约阅读时间需要 11 分钟。

1文件上传的流程:

  第一步:首先得用表单标签的<s:file>在客户端接收上传的文件例如:

1 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 2 <%@ taglib prefix="s" uri="/struts-tags" %> 3  4    5   
6 7 8
9
------
代表接收文件在上传客户端的具体位置10
11
12
13 14

    第二步:在Action中声明三个属性,并声明get和Set方法

    1FileFieldName(名字要与form表单的<s:filr>标签的name属性相同):接收form表单中的wordFile的值,也就是接收文件在客户端的实际路径

    例如:private File wordFile;

           2FileFieldNameContentType:上传的文件属性;示例:private String wordFileContentType

          3 FileFieldNameFileName:这个代表上传的文件名,示例:private Sting wordFileFileName,例如上传的文件是index.jsp,那wordFileFileName=index.jsp

    因为2和3都是上传文件的属性,所以都会带有上传时<s:file>标签时定义的方法

   代码示例:

1 package com.atguigu.struts2.FileUpload.app; 2  3 import java.io.File; 4  5 import com.opensymphony.xwork2.ActionSupport; 6  7 public class TestAction extends ActionSupport { 8  9     /**10      * 11      */12     private static final long serialVersionUID = 1L;13     private File wordFile;14     private String wordFileContentTypeString;15     private String wordFileFileName;16     /**17      * @return the wordFile18      */19     public File getWordFile() {20         return wordFile;21     }22     /**23      * @param wordFile the wordFile to set24      */25     public void setWordFile(File wordFile) {26         this.wordFile = wordFile;27     }28     /**29      * @return the wordFileContentTypeString30      */31     public String getWordFileContentTypeString() {32         return wordFileContentTypeString;33     }34     /**35      * @param wordFileContentTypeString the wordFileContentTypeString to set36      */37     public void setWordFileContentTypeString(String wordFileContentTypeString) {38         this.wordFileContentTypeString = wordFileContentTypeString;39     }40     /**41      * @return the wordFileFileName42      */43     public String getWordFileFileName() {44         return wordFileFileName;45     }46     /**47      * @param wordFileFileName the wordFileFileName to set48      */49     public void setWordFileFileName(String wordFileFileName) {50         this.wordFileFileName = wordFileFileName;51     }52     public String execute() throws Exception {53         // TODO Auto-generated method stub54         return super.execute();55     }56 }

文件上传?何为文件上传,就是把客户端的文件读取了然后写入服务里面吧,所以必须要使用到输入和输出流

第三步:声明输入流和输出流 ,把文件写到自己指定的服务器位置:

  1)先设置文件的存储位置吧:servletContext.getRealPath("/files/" + wordFileFileName);设置文件放在根目录的files文件夹里面,

                 wordFileFileName:代表放入files文件夹时上传文件的名

 

     2)读取上传的文件吧,并把文件写入我们指定的位置

FileInputStream in = new FileInputStream(ppt);/把文件放入输入流中FileOutputStream out = new FileOutputStream(dir);byte [] buffer = new byte[1024];int len = 0;while((len = in.read(buffer)) != -1){//从输入流读取上传文件的消息out.write(buffer, 0, len);//把上传文件写入我们的服务器的files文件夹的wordFileFileName文件中}
完整示例代码:  1 ServletContext servletContext=ServletActionContext.getServletContext(); 2         String dir=servletContext.getRealPath("/File/"+pptFileName); 3         FileInputStream fis=new FileInputStream(ppt); 4         FileOutputStream fos=new FileOutputStream(dir); 5         byte [] buffer = new byte[1024];//因为FileinputStream是字节流,所以要声明一个字节数组来存放从文件读出来的字节 6         int len = 0; 7         while((len = fis.read(buffer)) != -1){ //fis.read()方法读取文件,没有读取完就返回0读取完就返回-1 8             fos.write(buffer, 0, len); 9         }10                 fos.close();11                 fis.close();

 

转载于:https://www.cnblogs.com/jeremy-blog/p/3995284.html

你可能感兴趣的文章
struts2中struts.xml配置文件详解
查看>>
Javascript中的with用法
查看>>
GIS-008-ArcGIS JS API 全图
查看>>
js splice方法
查看>>
Linux--多网卡的7种Bond模式
查看>>
ADO 连接数据库,取到VT_DATE型日期转换成 int型
查看>>
properties 配置文件中值换行的问题
查看>>
Azure 部署 Asp.NET Core Web App
查看>>
Masonry和FDTemplateLayoutCell 结合使用示例Demo
查看>>
linux 切换用户之后变成-bash-x.x$的解决方法
查看>>
用备份控制文件做不完全恢复下的完全恢复(数据文件备份<旧>--新建表空间--控制文件备份<次新>--日志归档文件<新>)...
查看>>
python下RSA加密解密以及跨平台问题
查看>>
详解Java Spring各种依赖注入注解的区别
查看>>
android 区分wifi是5G还是2.4G(转)
查看>>
多个构造器参数使用构建器
查看>>
模板方法模式(Template Method)
查看>>
创建预编译头 Debug 正常 Release Link Error:预编译头已存在,使用第一个 PCH
查看>>
asp.net上传文件夹权限配置以及权限配置的分析
查看>>
IPC's epoch 6 is less than the last promised epoch 7
查看>>
C语言 · 寂寞的数
查看>>