首先。web3.0li没有了web-info..>>>web.xml,这就导致使用注解上传生成
以后可以回来看看,毕竟新人学东西就这样浅,一点一点积累吧
//这是个工具类,用来专门生成文件目录名。以及随机生成文件名,还有文件名的截取,在
package com.sml.utils;
import java.util.UUID;
public class UploadUtils {
/**
* 获取随机名称
* @param realName 真实名称
* @return uuid
*/
public static String getUUIDName(String realName){
//realname 可能是 1.jpg 也可能是 1
//获取后缀名
int index = realName.lastIndexOf(".");
if(index==-1){
return UUID.randomUUID().toString().replace("-", "").toUpperCase();
}else{
return UUID.randomUUID().toString().replace("-", "").toUpperCase()+realName.substring(index);
}
//return null;
}
/**
* 获取文件真实名称
* @param name
* @return
*/
public static String getRealName(String name){
// c:/upload/1.jpg 1.jpg
//获取最后一个"/"
int index = name.lastIndexOf("\\");
return name.substring(index+1);
}
/**
* 获取文件目录
* @param name 文件名称
* @return 目录
*/
public static String getDir(String name){
int i = name.hashCode();
String hex = Integer.toHexString(i);
int j=hex.length();
for(int k=0;k<8-j;k++){
hex="0"+hex;
}
// System.out.println(hex);
return "/"+hex.charAt(0)+"/"+hex.charAt(1);
}
public static void main(String[] args) {
String s="0";
String s1="1.jpg";
//System.out.println(getUUIDName(s));
//System.out.println(getUUIDName(s1));
//System.out.println(getRealName(s));
//System.out.println(getRealName(s1));
System.out.println(getDir(s));
System.out.println(getDir(s1));
//getDir(s);
//getDir(s1);
}
}
package com.sml.web.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import org.apache.commons.io.IOUtils;
import com.sml.utils.UploadUtils;
/**
* 获取普通上传组件(除了文件意以外的组件)+文件上传组件 到指定位置
*/
@WebServlet("/upload1")
@MultipartConfig
public class UploadServlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置编码
request.setCharacterEncoding("utf-8");
// 普通
String username = request.getParameter("username");
System.out.println("普通文本框名为:" + username);
// 文件
Part part = request.getPart("f");
// 获取请求头里的所有信息
String allName = part.getHeader("content-disposition");
// 获取文件名称
String fileName = allName.substring(allName.indexOf("filename=") + 10, allName.length() - 1);
System.out.println("文件实际名称为为:" + fileName);
// 获取随机名称
String uuidName = UploadUtils.getUUIDName(fileName);
System.out.println("文件随机名称为:" + uuidName);
// 获取文件目录
String dir = UploadUtils.getDir(uuidName);
System.out.println("随即目录为"+dir);
String realPath = this.getServletContext().getRealPath("/upload" + dir);
File file = new File(realPath);
if (!file.exists()) {
file.mkdirs();
}
System.out.println("文件的实际目录为:" + realPath);
// 获取输入输出流
InputStream is = part.getInputStream();
FileOutputStream os = new FileOutputStream(new File(file, uuidName));
// 利用ioutils复制对象:IOUtils对拷流,一个工具类
IOUtils.copy(is, os);
// 释放资源
os.close();
is.close();
// part释放资源
part.delete();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}