java 上传下载文件,Java上传文件
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
准备工作
(视频教程推荐:java课程)
需要导入的冲突包
运行截图
文件上传截图
文件下载截图
上传文件代码小型应用程序
@ web servlet(name= upload servlet ,value=/upload )
@ multipart config(max filesize=1024 * 1024 * 5,maxRequestSize=1024 * 1024 * 20)//1添加多部分配置注解
公共类UploadServlet扩展HttpServlet {
受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
//存放文件的目录
字符串实路径=请求。getservletcontext().获取真实路径(/we b-INF/upload );
文件目录=新文件(真实路径);
如果(!目录存在()){
导演。mkdirs();
}
ListString allow exts=new ArrayList string();
允许扩展。add( jpg );
允许扩展。添加(“png”);
允许扩展。add( gif );
//1乱码
请求。setcharacterencoding(“utf-8”);
回应。设置内容类型( text/html;charset=utf-8 );
//2使用getParts()获取数据
收集零件零件=请求。get parts();
//3遍历
PrintWriter out=响应。getwriter();
如果(零件!=nullparts.size()0){
对于(零件零件:零件){
//判断表单元素是普通字段,还是文件
字符串提交文件名=部分。get submitted filename();
if(submittedFileName==null){//普通字段
字符串名称=部分。getname();
字符串值=请求。getparameter(名称);
System.out.println(名称"."值);
}else{//文件
//判断文件是否为
如果(提交文件名。等于(“”){
继续;
}
//System.out.println(提交的文件名);
//从请求头中获取文件
字符串dis=零件。get标头(“内容-处置”);
字符串filename=dis。子串(dis。lastindexof( filename=)10。长度()-1);
文件名=文件名。子字符串(文件名。lastindexof( \ \ )1);
System.out.println(文件名);
//获取文件名的后缀
string ext=文件名。子字符串(文件名。lastindexof( . )) 1);
如果(!allowExts.contains(ext)){
out.println(文件名不符合上传文件类型要求.);
继续;
}
//把文件保存
//1创建新的文件名
字符串新文件名=上传实用程序。创建新文件名(文件名);
//2创建新的路径
字符串新路径=上传实用程序。创建新路径(真实路径,文件名);
部分。写入(新路径文件。分隔符新文件名);
//删除部分
部分。delete();
out.println(上传成功:文件名);
}
}
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
doPost(请求、响应);
}
}每个属性表示的内容
文件下载代码小型应用程序
@ web servlet(name= download servlet ,value=/download )
公共类下载Servlet扩展HttpServlet {
受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
//乱码
请求。setcharacterencoding(“utf-8”);
//获取文件名
字符串uuid文件名=请求。getparameter( filename );//d 578 be 74 FD 864 ac2a 879d 77 b 07 f 13793 _ backg。使用jpeg文件交换格式存储的编码图像文件扩展名
//去掉全局唯一识别
字符串文件名=uuid文件名。子字符串(uuid文件名。( _ )1)的索引;
//存放文件的根路径
字符串实路径=请求。getservletcontext().获取真实路径(/we b-INF/upload );
//获取真正目录
字符串路径=上传实用程序。创建新路径(真实路径,文件名);
文件文件=新文件(路径文件。分隔符uuid文件名);
if(file.exists()){
回应。设置标题(内容-处置,附件;filename= URL编码器。encode(文件名,“utf-8”);
ServletOutputStream OS=response。获取输出流();
文件输入流fis=新文件输入流(文件);
字节[]缓冲区=新字节[1024 * 4];
int len=0;
while((len=fis.read(buf))!=-1){
os.write(buf,0,len);
}
}否则{
回应。设置内容类型( text/html;charset=utf-8 );
response.getWriter().写(文件不存在.);
}
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
doPost(请求、响应);
}
}每个属性表示的内容
读取下载文件小型应用程序
@ web servlet(name= ListFileServlet ,value=/listfile )
公共类列表文件服务器扩展HttpServlet {
受保护的void doPost(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
//1读取可以被下载的文件
字符串实路径=请求。getservletcontext().获取真实路径(/we b-INF/upload );
HashMapString,String map=new HashMap();
UploadUtils.listFile(新文件(realPath),地图);
//2放入域中
request.setAttribute(map ,map);
//3转发
请求。getrequestdispatcher(/list。JSP’).转发(请求、响应);
}
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)引发ServletException,IOException {
doPost(请求、响应);
}
}工具类小型应用程序
公共类上传工具{
公共静态void main(String[] args) {
字符串s=创建新文件名( AAA。jpg’);
系统。出去。println(s);
}
/**
* 根据原始文件名产生一个新的文件名
* @param文件名
* @返回
*/
公共静态字符串makeNewFileName(字符串文件名){
//UUID统一唯一标识码
String uuid=UUID.randomUUID().toString().替换(-, );//默认32位的16进制
返回uuid"_ "文件名;
}
/**
* 创建新的路径
* @param路径
* @param文件名
* @返回
*/
公共静态字符串makeNewPath(字符串路径,字符串文件名){
int num=文件名。hashcode();//01101011001011011111111111 1111 0101 0101
int path 1=num 0 xf
int path 2=(num 4)0xf;
string new path=path file。分隔符路径1文件。分离器路径2;
文件目录=新文件(新路径);
如果(!目录存在()){
导演。mkdirs();
}
返回新路径
}
//遍历可以被下载的文件
公共静态空的列表文件(文件目录、哈希映射字符串、字符串映射){
文件[]文件=目录。列出文件();
如果(文件!=nullfiles.length0){
对于(文件文件:文件){
if(file.isDirectory()){
列表文件(文件,映射);
}否则{
//文件
字符串uuid文件名=文件。getname();
字符串文件名=uuid文件名。子字符串(uuid文件名。( _ )1)的索引;
map.put(uuidFilename,文件名);
}
}
}
}
}相关教程推荐:java入门教程以上就是爪哇岛实现文件的上传和下载功能的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。