java上传文件限制大小_Java Web:附件上传,两种文件上传限制格式及大小方法,学习笔记文件操作【诗书画唱】...

0a0376d6fbbfca7b789097f99fcabe6c.png

85ab6e7298eaf228d5bd957671e04ee8.png

3cef2d75062b82665cd1a632dca4a646.png

cf2b588d005541dc59667a5d012b0b93.png

附件上传:

8e391fe832b23b37ccc840f1a83ccdff.png

4134cee054bbcc9f426468ddc883135d.png

package com.jy.controller;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

* Servlet implementation class UploadServlet

*/

@WebServlet("/up")

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public UploadServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//乱码处理

request.setCharacterEncoding("utf-8");

//创建附件上传工厂类

DiskFileItemFactory factory = new DiskFileItemFactory();

//创建文件上传对象

ServletFileUpload upload = new ServletFileUpload(factory);

//处理选中文件中的中文乱码的

upload.setHeaderEncoding("utf-8");

//设置文件的临界值大小是50K

//1024B就是1KB

factory.setSizeThreshold(1024 * 50);

//设置临时文件夹的路径

File file = new File("D:\\java\\JavaWebFuJianShangChuan\\WebContent\\img");

factory.setRepository(file);

//限制上传文件的大小最大是5MB

//1024KB就是1MB

upload.setSizeMax(1024 * 1024 * 20);

//1024 * 1024 * 20就是 (1*1)MB*20=20MB

try {

//解析表单提交过来的数据

Listlist = upload.parseRequest(request);

//对list进行循环遍历

for(FileItem fi : list) {

//flag只有当type="file"的时候,才会为false

Boolean flag = fi.isFormField();

if(flag) {//正常的表单元素:文本输入框,密码输入框,单选框,多选框...

//正常表单元素的处理

}else {//就是type="file"的表单元素

//附件上传的处理

//获取你选中的文件在本机上的路径

String FileFullPath = fi.getName();

System.out.println("你选中的文件路径是:" + FileFullPath);

//根据本机上的路径创建文件对象

File f = new File(FileFullPath);

//获取文件名

String fileName = f.getName();

System.out.println("你选中的文件名是:" + fileName);

//获取文件的大小

long size = fi.getSize();

System.out.println("你选中的文件的大小是:" + size + "字节");

//获取工程所在的服务器的路径

String path = request.getServletContext().getRealPath("");

System.out.println(path);

//设置将选中的文件上传到服务器的项目的img文件夹下

String fPath = path + "\\img\\" + fileName;

System.out.println("选中的附件上传到项目中的文件位置是:" + fPath);

//进行附件的拷贝

//选中的文件流不能通过f获取,只能通过fi获取

InputStream is = fi.getInputStream();

OutputStream os = new FileOutputStream(fPath);

//进行拷贝

byte []buf = new byte[1024];

int len = 0;

while((len = is.read(buf)) != -1) {

os.write(buf,0,len);

}

//关闭文件流

os.close();

is.close();

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}f33bfce2efd73d863ffcf29960ecaad3.png

8d8b030b3bebaf9b635f4d8b59255f5d.png

charset=UTF-8" pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

"keyword1,keyword2,keyword3">

* {

font-size: 23px;

}

附件上传

4de7c26df2c9220aafeb7eb3552cc43e.png

a11215fee339b73a1612e78c83ecb44d.png

ccb578d165d7f9bc92f1264d43a91db4.png

5617eb20beddd79d7d04537259193187.png

dc0cf6a381a4d6e21a01fad6cb7885b2.png

30c3b6f79af1f19e57b2e9b83c3ed5c0.png

1、实现附件上传功能。尝试对上传文件的类型进行限制,只能传图片(png,jpg)文件。

之前的都一样,就是jsp界面加上JS事件就可以了:

方法一:7ddb5d53db1642f58c3801bcbbe382de.png

charset=UTF-8" pageEncoding="UTF-8"%>

String path = request.getContextPath();

String basePath = request.getScheme()+"://"

+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

"keyword1,keyword2,keyword3">

* {

font-size: 23px;

}

var isIE = /msie/i.test(navigator.userAgent) && !window.opera;

function fileChange(target,id) {

var fileSize = 0;

var filetypes =[".jpg",".png"];

var filepath = target.value;

var filemaxsize = 1024*2;//2M

if(filepath){

var isnext = false;

var fileend = filepath.substring(filepath.lastIndexOf("."));

if(filetypes && filetypes.length>0){

for(var i =0; i

if(filetypes[i]==fileend){

isnext = true;

break;

}

}

}

if(!isnext){

alert("不接受此文件类型!只能传图片(png,jpg)文件");

target.value ="";

return false;

}

}else{

return false;

}

if (isIE && !target.files) {

var filePath = target.value;

var fileSystem = new ActiveXObject("Scripting.FileSystemObject");

if(!fileSystem.FileExists(filePath)){

alert("附件不存在,请重新输入!");

return false;

}

var file = fileSystem.GetFile (filePath);

fileSize = file.Size;

} else {

fileSize = target.files[0].size;

}

var size = fileSize / 1024;

if(size>filemaxsize){

alert("附件大小不能大于"+filemaxsize/1024+"M!");

target.value ="";

return false;

}

if(size<=0){

alert("附件大小不能为0M!");

target.value ="";

return false;

}

}

附件上传

d64c261da3f22d446429b2addd5d6886.png

8be01fddfb83c1982bed6b853ff28c43.png

方法二:

前面基本一样,jsp界面的js事件去掉,就是下面的变一下:dd681a89d067e7d2632dc520ff5d551b.png

package com.SSHC.controller;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**

* Servlet implementation class UploadServlet

*/

@WebServlet("/up")

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public UploadServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//乱码处理

request.setCharacterEncoding("utf-8");

//创建附件上传工厂类

DiskFileItemFactory factory = new DiskFileItemFactory();

//创建文件上传对象

ServletFileUpload upload = new ServletFileUpload(factory);

//处理选中文件中的中文乱码的

upload.setHeaderEncoding("utf-8");

//设置文件的临界值大小是50K

//1024B就是1KB

factory.setSizeThreshold(1024 * 200);

//设置临时文件夹的路径

File file = new File("d:\\temp");

factory.setRepository(file);

//限制上传文件的大小最大是5MB

//1024KB就是1MB

upload.setSizeMax(1024 * 1024 * 20);

try {

//解析表单提交过来的数据

Listlist = upload.parseRequest(request);

//对list进行循环遍历

for(FileItem fi : list) {

//flag只有当type="file"的时候,才会为false

Boolean flag = fi.isFormField();

if(flag) {//正常的表单元素:文本输入框,密码输入框,单选框,多选框...

//正常表单元素的处理

}else {//就是type="file"的表单元素

//附件上传的处理

//获取你选中的文件在本机上的路径

String FileFullPath = fi.getName();

System.out.println("你选中的文件路径是:" + FileFullPath);

//根据本机上的路径创建文件对象

File f = new File(FileFullPath);

//获取文件名

String fileName = f.getName();

System.out.println("你选中的文件名是:" + fileName);

//获取选中文件的后缀名

//获取到文件中最后一个.的索引

int index = fileName.lastIndexOf('.');

//根据.的位置进行截取

String fix = fileName.substring(index + 1);

System.out.println("文件的后缀名是:" + fix);

//如果后缀名是png,jpg或者gif,就进行附件上传

if(fix.equals("png") || fix.equals("jpg")

|| fix.equals("gif")) {

//获取文件的大小

long size = fi.getSize();

System.out.println("你选中的文件的大小是:" + size + "字节");

//获取工程所在的服务器的路径

String path = request.getServletContext().getRealPath("");

System.out.println(path);

//设置将选中的文件上传到服务器的项目的img文件夹下

String fPath = path + "\\img\\" + fileName;

System.out.println("选中的附件上传到项目中的文件位置是:" + fPath);

//进行附件的拷贝

//选中的文件流不能通过f获取,只能通过fi获取

InputStream is = fi.getInputStream();

OutputStream os = new FileOutputStream(fPath);

//进行拷贝

byte []buf = new byte[1024];

int len = 0;

while((len = is.read(buf)) != -1) {

os.write(buf,0,len);

}

//关闭文件流

os.close();

is.close();

//http://localhost:8888/j1908021/img/4.png

String p = request.getContextPath();

System.out.println("工程名是:" + p);

String basePath = request.getScheme() + "://" +

request.getServerName() + ":" + request.getServerPort()

+ p + "/";

//获取上传的图片在服务器上的路径

String imgPath = basePath + "img\\" + fileName;

System.out.println("图片的显示路径是:" + imgPath);

//将图片的路径传递到show.jsp页面去

request.setAttribute("imgPath", imgPath);

//上传成功以后,跳转到一个show.jsp页面

request.getRequestDispatcher("show.jsp")

.forward(request, response);

} else {

response.setCharacterEncoding("gbk");

response.getWriter().write("选中的文件不是一个图片,无法上传");

}

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

ad99d592213a0544a3715ccc7687bfb7.png

2、在两台电脑之间进行附件上传的操作。

0690147b24693d79faab464f50679690.png

be621db3c43b4c102bccfe51e6eea366.png

3、学会使用cmd命令:ipconfig查看服务器的ip地址,ping检查跟指定的ip地址的电脑是否连接在同一个网内的

ping 192.168.42.133就是检查你的电脑跟这个ip地址的电脑是否连接在一起了。5b5294a29d72ad71af8e4501aa812512.png

5fc85019321caf6867a5f81ca7f92895.png

4cbc4a6b26c966d930c932f1fc6c43f6.png

————0c3c65e8c7001ea35edac04828e40b5f.png

dfb4b0364c93e19cf56e9bd53f8b3f05.png

81c5fdd55739ca1cec1275d23f8dbe2b.png

26ea9bacc071e9428e94dc0a6aa2afa2.png

e5895194b1542a0a9b5a25b02c364b87.png

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件Web开发中常见的功能之一,Java中也提供了多种方式来实现文件。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件。 以下是实现文件的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上文件大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上文件 for (FileItem item : items) { // 判断当前FileItem是否为上文件 if (!item.isFormField()) { // 获取上文件文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上文件 File file = new File("D:/uploads/" + fileName); // 将上文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上文件。然后设置了缓冲区大小和上文件大小限制。接着创建一个ServletFileUpload对象,用于解析上文件。最后遍历FileItem的List集合,判断当前FileItem是否为上文件,如果是,则获取文件名,创建一个File对象,将上文件保存到指定的目录中。 4.文件完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件的步骤。需要注意的是,文件可能会带来安全隐患,因此在处理上文件时,需要进行严格的校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值