生活随笔
收集整理的這篇文章主要介紹了
java上传文件图片
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
別忘記更換包名
注意需要下載兩個包
apache官網(wǎng)下載即可
java頁面
package com.jdbc.servlet;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;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.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Upload extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public Upload() {super();// TODO Auto-generated constructor stub}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String path=request.getServletContext().getRealPath("/WEB-INF/upload");String temp=request.getServletContext().getRealPath("/WEB-INF/temp");File file = new File(temp);if(!file.exists()) {file.mkdirs();}//創(chuàng)建一個工廠 可以設(shè)置很多上傳文件的限制內(nèi)容System.out.println(request.getServletContext().getRealPath("/WEB-INF/upload"));DiskFileItemFactory factory = new DiskFileItemFactory();factory.setSizeThreshold(100*1024);factory.setRepository(file);//創(chuàng)建req請求的解析器 ServletFileUpload sfu = new ServletFileUpload(factory);//stu解析器 也可以設(shè)置很多上傳文件的限制內(nèi)容sfu.setFileSizeMax(20*1024*1024);//上傳文件大小sfu.setHeaderEncoding("utf-8"); //上傳編碼sfu.setSizeMax(40*1024*1024);//同時上傳文件總大小的最大值/** 上傳監(jiān)聽器*/sfu.setProgressListener(new ProgressListener() {@Overridepublic void update(long arg0, long arg1, int arg2) {// TODO Auto-generated method stubSystem.out.println("上傳文件大小為:"+arg1+"已上傳文件大小:"+arg0);}});if(!ServletFileUpload.isMultipartContent(request)) {System.out.println("無法上傳");return ;}//解析器解析req請求 解析需要獲取異常try {List<FileItem> list=sfu.parseRequest(request);for(FileItem fileItem:list) {//fileItem表單項 普通/文件域//isFormField()判斷是不是普通表單項if(fileItem.isFormField()) {//正常String name=fileItem.getFieldName();String val=fileItem.getString();}else {//文件String filename = fileItem.getName();//獲取文件的名稱if(filename==null ||filename.trim().equals("")) {System.out.println("沒有選擇文件");continue;}filename=filename.substring(filename.lastIndexOf("\\")+1);// System.out.println("文件名稱:"+filename);String fileex= filename.substring(filename.lastIndexOf("."));//文件后綴名//System.out.println(fileex);fileItem.getContentType();//獲取文件的類型fileItem.getSize();//獲取文件大小InputStream in=fileItem.getInputStream();//獲取文件String saveFileName=makeFileName(filename); //生成保存文件名String realSavePath=makePath(saveFileName,path);//生成保存路徑//第一種try {fileItem.write(new File(realSavePath+"\\"+saveFileName));// fileItem.delete();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//第二種/*FileOutputStream out = new FileOutputStream(realSavePath+"\\"+saveFileName);byte[] buffer = new byte[1024];int len=0;while((len=in.read(buffer))>0) {out.write(buffer,0,len);}in.close();out.close();*/}}} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private String makePath(String saveFileName,String path) {///* 生成新的文件int hashCoad=saveFileName.hashCode();int dir1=hashCode()&0xf;int dir2=hashCode()&0xf >> 4;String dir=path+"\\"+dir1+"\\"+dir2;*/Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String datepath=sdf.format(dt);String dir=path+File.separator+datepath;File file=new File(dir);if(!file.exists()) {file.mkdirs();}return dir;}private String makeFileName(String filename) {// TODO Auto-generated method stubreturn UUID.randomUUID().toString()+"_"+filename;}}
jsp頁面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'upload.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><form action="Upload" method="post" enctype="multipart/form-data"><input type="file" name="img"><input type="submit" value="上傳"></form></body>
</html>
總結(jié)
以上是生活随笔為你收集整理的java上传文件图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。