java 文件上传 struts_Struts 1.x 文件上传 java

展开全部

//以下方e69da5e6ba9062616964757a686964616f31333332633035法实现文件的上传

public ActionForward upLoadFile(ActionMapping mapping, ActionForm form,

HttpServletRequest request,

HttpServletResponse response) throws

Exception {

ActionForward forward=null;

Date date = new Date();

FileActionForm fileActionForm = (FileActionForm) form;

//FormFile用于指定存取文件的类型

FormFile file = fileActionForm.getFile(); //获取当前的文件

// 获得系统的绝对路径 String dir = servlet.getServletContext().getRealPath("/image");

//我上传的文件没有放在服务器上。而是存在D:D:\\loadfile\\temp\\

String dir="D:\\loadfile\\temp\\";

int i = 0;

String type = file.getFileName();

while(i!=-1){

//找到上传文件的类型的位置,这个地方的是'.'

i = type.indexOf(".");

/**//* System.out.println(i);*/

/**//*截取上传文件的后缀名,此时得到了文件的类型*/

type = type.substring(i+1);

}

// 限制上传类型为jpg,txt,rar;

if (!type.equals("jpg") && !type.equals("txt")&& !type.equals("bmp"))

{//当上传的类型不为上述类型时,跳转到错误页面。

forward=mapping.findForward("error");

}

else

{

// 将上传时间加入文件名(这个地方的是毫秒数)

String times = String.valueOf(date.getTime());

//组合成 time.type

String fname = times + "." + type;

//InInputStream是用以从特定的资源读取字节的方法。

InputStream streamIn = file.getInputStream(); //创建读取用户上传文件的对象

//得到是字节数,即byte,我们可以直接用file.getFileSize(),也可以在创建读取对象时用streamIn.available();

// int ok=streamIn.available();

int ok=file.getFileSize();

String strFee = null;

//这个地方是处理上传的为M单位计算时,下一个是以kb,在下一个是byte;

if(ok>=1024*1024)

{

float ok1=(((float)ok)/1024f/1024f);

DecimalFormat myformat1 = new DecimalFormat("0.00");

strFee = myformat1.format(ok1)+"M";

System.out.println(strFee+"M");

}

else if(ok>1024 && ok<=1024*1024)

{

double ok2=((double)ok)/1024;

DecimalFormat myformat2=new DecimalFormat("0.00");

strFee = myformat2.format(ok2)+"kb";

System.out.println(strFee+"kb");

}

else if(ok<1024)

{

System.out.println("aaaaaaaaa");

strFee=String.valueOf(ok)+"byte";

System.out.println(strFee);

}

System.out.println( streamIn.available()+"文件大小byte");

//这个是io包下的上传文件类

File uploadFile = new File(dir); //指定上传文件的位置

if (!uploadFile.exists() || uploadFile == null) { //判断指定路径dir是否存在,不存在则创建路径

uploadFile.mkdirs();

}

//上传的路径+文件名

String path = uploadFile.getPath() + "\\" + fname;

//OutputStream用于向某个目标写入字节的抽象类,这个地方写入目标是path,通过输出流FileOutputStream去写

OutputStream streamOut = new FileOutputStream(path);

int bytesRead = 0;

byte[] buffer = new byte[8192];

//将数据读入byte数组的一部分,其中读入字节数的最大值是8192,读入的字节将存储到,buffer[0]到buffer[0+8190-1]的部分中

//streamIn.read方法返回的是实际读取字节数目.如果读到末尾则返回-1.如果bytesRead返回为0则表示没有读取任何字节。

while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {

//写入buffer数组的一部分,从buf[0]开始写入并写入bytesRead个字节,这个write方法将发生阻塞直至字节写入完成。

streamOut.write(buffer, 0, bytesRead);

}

// 关闭输出输入流,销毁File流。

streamOut.close();

streamIn.close();

file.destroy();

String paths=path;

System.out.println(paths);

String fileName = Chinese.toChinese(fileActionForm.getFileName()); //获取文件的名称

//String fileSize = String.valueOf(file.getFileSize());

String fileDate = DateFormat.getDateInstance().format(date);

String sql = "insert into tb_file values('" + fileName + "','" +

strFee + "','" + fileDate + "','" + paths + "')";

connection.executeUpdate(sql);

connection.closeConnection();

forward=mapping.findForward("upLoadFileResult");

}

return forward;

}

你可以参照这个做

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值