小滴课堂-学习笔记:新版Javaweb核心之文件上传下载实战

python下载网站文件到本地,python下载网站所有网页 打开对应的出错log文件,看到Could not create unix socket lock file的出错信息。这个socke文件从信息上看,是在tmp目录创建的,之前把这个目录的权限修改了,应该问题就是出在这里了。这篇文章主要介绍了python登录网站自动下载文件,具有一定借鉴价值,需要的朋友可以参考下。打开后,在文件后面添加一句: socket=/usr/local/mysql/mysql.sock。在命令行窗口上,打开my.cnf配置文件,这是mysql的配置文件。 阅读详情

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

 

目录

第1集 新版javaweb的文件上传讲解

第2集 javaweb核心之文件下载实战

干货文档


第1集 新版javaweb的文件上传讲解

简介:讲解Javaweb文件上传

  • javaweb文件上传

    • Web应用系统开发中,文件上传和下载功能是非常常用的功能,浏览器在上传的过程中是将文件以流的形式提交到服务器端的

     

  • 前端开发 1)表单的提交方法必须是post 2)需要声明是一个文件上传组件  3)必须设置表单的enctype="multipart/form-data

    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>小滴课堂文件上传样例</title>
    </head>
    <body>
    ​
    <form action="<%=request.getContextPath()%>/fileUpload" method="post" enctype="multipart/form-data">
    ​
        用户名:<input type="text" name="username"/>
        头像:<input type="file" name="img">
        <input type="submit" value="提交">
    ​
    </form>
    </body>
    </html>

     

  • 后端开发

    
    
    
    @WebServlet("/fileUpload")
    @MultipartConfig
    public class FileUploadServlet extends HttpServlet {
    ​
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ​
            String username = request.getParameter("username");
    ​
            System.out.println("username="+username);
    ​
            Part part = request.getPart("img");
    ​
            //获取真实文件名称
            String header = part.getHeader("content-disposition");
            String realFileName = header.substring(header.indexOf("filename=")+10,header.length()-1);
    ​
            System.out.println("realFileName="+realFileName);
    ​
    ​
            //获取真实的文件内容
            InputStream is =  part.getInputStream();
    ​
            //web-inf目录外界不能直接访问,如果文件机密性强则放这里
            //String dir = this.getServletContext().getRealPath("/WEB-INF/file");
    ​
            String dir = this.getServletContext().getRealPath("/file");
    ​
            File dirFile = new File(dir);
    ​
            //如果目录不存在,则创建
            if(!dirFile.exists()){
                dirFile.mkdirs();
            }
    ​
            String uniqueName = UUID.randomUUID()+realFileName;
    ​
            //文件流拷贝
            //File file = new File(dir,realFileName);
    ​
            File file = new File(dir,uniqueName);
    ​
            FileOutputStream out = new FileOutputStream(file);
    ​
            byte[] buf = new byte[1024];
            int len;
    ​
            while ((len = is.read(buf))!=-1 ){
                out.write(buf,0,len);
            }
            out.close();
            is.close();
    ​
            //图片访问
            request.getRequestDispatcher("/file/"+uniqueName).forward(request,response);
        }
    }
    

     

  • 注意点:

    • 考虑上传文件存储的目录
    • 防止文件重名覆盖,防止一个目录下面出现太多文件,限制上传文件的最大值,上传的文件判断后缀名是否合法

     

  • 互联网公司里面的文件服务器:

    • 基本很少互联网公司把文件存储在javaweb项目里面,一个是性能,一个是成本
    • 多数是会搭建专门的文件服务器,或者使用第三方的CDN,比如阿里云的OSS, 高级架构课程会讲这块知识点

 

第2集 javaweb核心之文件下载实战

简介:讲解 javaweb的文件下载讲解

  • javaweb文件下载

    • 网站下载文件,这块也是很常用的,javaweb如何实现文件下载呢?
    • 只需通过超链接即可实现,就是通过超链接,在连接地址里写上文件的路径,浏览器会自动打开该文件
    • 普通的文本,图片等浏览器能直接显示内容的浏览器都能直接打开并显示
    • 如果是浏览器无法打开的文件,比如exe等浏览器就会提示你下载改文件或者使用当前系统自带的工具打开该文件
  • 后端开发

    • 客户端发送请求给服务端告诉服务端需要下载的文件,服务端读取该文件转换为输入流,在通过outputstream响应给客户端,需要设置response的头信息

      
      
      
      @WebServlet("/download")
      public class FileDownloadServlet extends HttpServlet {
      ​
          @Override
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      ​
              //客户端传递需要下载的文件名
              String file = request.getParameter("file");
      ​
      ​
              //获取文件在我们项目中的路径,发布到tomcat的实际路径
              String path = request.getServletContext().getRealPath("/file/");
      ​
              String filePath = path+file;
      ​
              FileInputStream fis = new FileInputStream(filePath);
      ​
              response.setCharacterEncoding("UTF-8");
      ​
              //指明响应的配置信息,包含附件
              response.setHeader("Content-Disposition","attachment; filename="+file);
      ​
              //如果文件名不包含中文可以不设置该项
              //如果包含中文名,则需要设置编码,否则文件名下载后中文字符会乱码
              //getBytes指定了编码的方式,ISO-8859-1指定了解码(读取)的方式,想要转换编码,就是先编码,再解码
              //response.setHeader("Content-Disposition","attachment; filename="+new String(file.getBytes("gb2312"),"ISO-8859-1"));
      ​
              ServletOutputStream out = response.getOutputStream();
      ​
              byte[] buf = new byte[1024];
              int len;
      ​
              while ((len= fis.read(buf))!=-1){
                  out.write(buf,0,len);
              }
      ​
              out.close();
      ​
          }
      }
      

       

  • 前端开发

     

干货文档




<a href="<%=request.getContextPath()%>/download?file=test1.png">下载</a>

                                                        关注公众号发送:“优快云干货文档”  即可领取

Tribon Vitesse开发教程(一) Tribon Vitesse简介 Tribon Vitesse是Tribon提供给Python编程语言的编程接口,它是一系列的API。使用Python的语法调用这些API,结合Python语言自身的语法生成的程序叫做Vitesse程序。Vitesse是法语“速度”的意思,读作“为戴斯”。使用Tribon Vitesse可以直接访问Tribon产品信息模型和使用Tribon应用程序的功能,以控制设计 阅读详情

相关推荐

Win10插网线显示未识别网络的三种解决方法

本文介绍了三种解决Win10插网线显示未识别网络问题的方法:更新或重启网络设备驱动程序、重置Winsock目录、启用Network Setup Service服务。这些方法都是基于常见的网络问题和解决方案而设计的,适用于大多数Win10用户。如果你遇到了这一问题,可以按照上述步骤进行操作,相信一定能够找到解决问题的方法。需要注意的是,在进行任何操作之前,请务必备份重要数据以防万一。此外,如果你对计算机硬件或软件不熟悉,建议寻求专业人士的帮助以避免造成不必要的损失。

nntxthml的博客 6771

python爬虫下载网站文件夹_python 爬虫获取文件式网站资源完整版(基于python 3.6)...

import requestsimport threading# 传入的命令行参数,要下载文件的url# url = 'http://www.nco.ncep.noaa.gov/pmb/codes/nwprod/nosofs.v3.0.4/fix/cbofs/nos.cbofs.romsgrid.nc'def Handler(start, end, url, filename,address):h...

weixin_39676633的博客 328

随机森林模型及案例(Python)

1 集成模型简介 集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。 集成学习模型的常见算法有Bagging算法和Boosting算法两种。 Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。 1.1 Bagging算法简介 Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投

qq_42433311的博客 4万+

python批量下载网页文件夹_【zz】Python2 批量下载网站文件

#! encoding=utf-8importurllib2importreimportosdefDownload(url,output):print "downloading..."+urlresponse=urllib2.urlopen(url)resourceFile= open(output,"wb")resourceFile.write(response.read())resourceF...

weixin_39624716的博客 177

机器学习——径向基函数(RBF)神经网络

目录 一、什么是基函数 二、什么是径向基函数 三、为什么RBF神经网络使用一个径向基函数作为隐含层的激活函数 四、参数训练 五、RBF网络vs BP网络和 SVM 一、什么是基函数 著名的傅里叶变换是指:n个有参(权值)的正、余弦三角函数基的和式可以等价的表示任意一个周期函数,这里的“基”和我们数学中说的坐标基或向量基含义相同,即坐标空间中任意一个向量都可以用基向量的线性和表示出来。 因此,我们引入函数空间的概念,函数空间中的每个连续函数可以表示为基函数的线性组合,就像向量空间中的每..

CHWB2580的博客 6272

基于分段线性近似的Softmax硬件加速器设计

本文深入探讨了基于分段线性近似的Softmax硬件加速器设计。针对深度学习模型中Softmax函数在硬件实现时指数运算成本高昂的问题,提出用分段线性拟合替代传统泰勒展开,通过一次乘加操作高效完成计算,并详细分析了输入范围压缩、精度与硬件资源权衡、以及包含地址生成、参数查找、乘加计算和归一化的完整硬件架构。该方法在保证精度的同时,显著提升了AI边缘芯片的推理速度和能效。

weixin_28278377的博客 312

python 爬虫获取网页 html 内容以及下载附件的方法

python 爬虫获取网页 html 内容以及下载附件的方法 python 爬虫获取网页 html 内容的两种方法: 获取静态网页和使用浏览器获取动态内容。 from urllib.request import urlopen from urllib import request from bs4 import BeautifulSoup from urllib.request import ur...

XnCSD的博客 1万+

告别路径打架!用Python实现CBS算法搞定仓库机器人调度(附完整代码)

本文详细介绍了如何使用Python实现CBS(Conflict-Based Search)算法解决仓库机器人调度中的路径冲突问题。通过多智能体路径规划(MAPF)技术,有效避免AGV在智能仓库中的碰撞和死锁,提供完整代码实现和工业场景优化技巧,帮助开发者快速构建高效的机器人调度系统。

weixin_30275415的博客 328

2023最新使用python爬虫爬取全网.pdf网址并下载需要的pdf文件资源(可设置搜索keyword)!!!

先来看看爬取pdf网址的结果,如图:爬取pdf的代码如下: 通过使用verify=False避免被https证书阻止,并使用content-disposition获取原始pdf名称,下载代码如下: 最终效果如图:感谢朋友们阅读,下期再见!!!

qq_53862860的博客 5059

【破局之道】LangChain4j 0.31.0 + Java 8 + Spring Boot:在“过时”环境中构建本地大模型应用的实战指南

本文为使用Java 8和Spring Boot等“过时”技术栈的团队提供了构建本地大模型应用的实战指南。通过采用LangChain4j 0.31.0这一兼容版本,结合Ollama部署本地大模型,开发者无需升级JDK即可在现有项目中快速集成AI能力,实现智能问答、文档摘要等功能,为传统项目注入创新活力。

t4y5u6i7o的博客 557

802.11ax 的OFDMA资源分配详解

802.11ax 引入的最重要的技术就是OFDMA。OFDMA中引入了RU(资源块)概念,也就是20Mhz/40Mhz/80Mhz/160Mhz的带宽可以切割成不同尺寸的RU,分配给不同的用户使用,这样就大大提高了频谱资源的利用率。 常见的RU尺寸有26/52/102/242/484/996,单位是子载波,每个子载波是78.125Khz,这样20Mhz的带宽可以划分为如下图所示的不同RU大小。 按照11ax规范的要求,上下行的数据传输都可以由AP来统一调度,这样上下行的OFDM...

weixin_43408952的博客 1万+

python爬虫系列之下载在线文档Excel(腾讯)

python爬虫系列之腾讯文档Excel数据一、简介二、实现步骤1. 数据准备2. 获取当前用户nowUserIndex3.创建导出任务4. 检查数据准备进度,并下载 一、简介 本文讲述使用python下载腾讯文档中的Excel数据。 思路 腾讯文档导出流程如下 Created with Raphaël 2.3.0点击导出腾讯文档准备数据数据准备完成?出现下载excel文件的urlyesno 使用抓包工具获取导出接口,检测数据是否准备完成接口、下载excel接口,使用requests进行调用,即

坐板凳上敲代码 2万+

基于单片机控制双向可控硅灯光强度设计

*单片机设计介绍,基于单片机控制双向可控硅灯光强度设计。

QQ2193276455的博客 2456

小滴课堂-新版JavaWeb零基础到实战专题课程-1

简介:讲解javaweb课程介绍和适合人群课程介绍 学Javaweb可以做什么和发展趋势不要说没有实战!!!! 前面先学怎么用,后续会有项目实战,跟着老师的步骤走,然后再跑课程学后水平项目体验适合人群学习形式github地址:GitHub - jackxy/javaweb-servlet5.0: 使用servlet5.0开发javaweb+小滴课堂开发者论坛实战 简介:javaweb课程目录浏览和课程服务 简介:介绍javase、javaweb、javaee联系javase: j

xdclass888的博客 397

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

小滴课堂-新版JavaWeb零基础到实战专题课程-12

javaweb文件上传。

xdclass888的博客 231

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

小滴课堂-新版JavaWeb零基础到实战专题课程-7

简介:讲解 HttpServletRequest 请求对象怎样添加servlet-api源码下载:Apache Tomcat® - Apache Tomcat 9 Software Downloads ,选择:Source Code Distribution添加:解压包,然后idea选择chose source code,选择java这层包就可以HttpServletRequest对象API测试 四大作用域对象:PageContext->【ServletRequest】->HttpSession->Se

xdclass888的博客 203

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

小滴课堂-新版JavaWeb零基础到实战专题课程-20

小滴课堂,旨在让编程不在难学,让技术与生活更加有趣。随着互联网+的时代,在线教育技术越来越便捷,小滴课堂依托在线教育时间以及空间上的便利,为广大IT从业者提供了更为方便、快捷的学习交流途径、提供大量高质量的IT在线课程。更多教程请访问xdclass.net(添加VX:xdclass99)...

xdclass888的博客 248

小滴课堂-新版JavaWeb零基础到实战专题课程-13

简介讲解什么是JDBC和相关介绍什么是JDBC全称JavaDataBaseConnectivity,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口提供了一种接口基准,可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序应用程序代码一般不能直接访问数据库,需要通过相应的数据库驱动程序才行,什么是数据库驱动?通俗来说就是数据库厂商的JDBC接口实现JDBC连接MySQL相关概念数据库驱动使用Java连接Mysql的步骤加载JDBC驱动程序。.........

xdclass888的博客 200

小滴课堂-新版JavaWeb零基础到实战专题课程-17

小滴课堂,旨在让编程不在难学,让技术与生活更加有趣。随着互联网+的时代,在线教育技术越来越便捷,小滴课堂依托在线教育时间以及空间上的便利,为广大IT从业者提供了更为方便、快捷的学习交流途径、提供大量高质量的IT在线课程。更多教程请访问xdclass.net(添加VX:xdclass99)简介:介绍Maven,使用前后区别什么是MavenApache组织开源的项目,一个软件项目管理和综合工具,基于项目对象模型(POM)的概念最核心的功能就是能够自动下载项目依赖库。...

xdclass888的博客 292

小滴课堂-学习笔记:javaweb开发核心之Http请求-响应实战

愿景:"让编程不再难学,让技术与生活更加有趣" 更多架构课程请访问 xdclass.net 目录 第1集 HttpServletRequest请求对象讲解 第2集 HttpServletRequest和用户登录表单提交 第3集 HttpServletResponse响应对象讲解 干货文档 第1集 HttpServletRequest请求对象讲解 简介:讲解 HttpServletRequest 请求对象 怎样添加servlet-api源码 下载:https://tomcat.

dev666的博客 227

【爬虫】Content-Type

在爬虫中向服务器发起一个GET请求的时候在服务器返回的信息头中会表示Content-Type。 其实它就是代表我们所访问的资源的类型。如果是Html文件则Content-Type的值未text/html 等等,下面是在网上找到的其它类型的值分别代表的含义。如果以后的爬虫想要爬取音频文件等信息时,我想至少应该判断下content-type,至于再往下怎么做还有待于研究。下面时MIME标准中定义的类型...

jason7323的博客 2301

python - 网站信息获取_requests用法

import requests,re,time,math import os from io import BytesIO from PIL import Image #收集第一步Html all_bigimg_html = [] real_url_html = [] #进入后收集大图地址 new_big_img = [] # 得到页面url def get_pageurl(root, start, counts): all_page = []; #需要获取页面1 if start .

270

python 爬虫 / 爬取并下载ppt文件方法 (实战篇)

爬虫下载文件,requests xpath

Moniko_yo的博客 7049

python如何爬取网站所有目录_[python] 爬取网站所有的URL

运行python脚本,最终程序目录下会是这样:result.txt中保存所有的URL文件夹sh.neusoft.com中保存爬虫得到的所有网页main.py的源代码如下# -*- coding: utf-8 -*import osimport reimport shutilREJECT_FILETYPE = 'rar,7z,css,js,jpg,jpeg,gif,bmp,png,swf,exe'#...

weixin_42576410的博客 4193

python3 爬虫相关学习7:使用 BeautifulSoup下载网页图片到本地文件夹

一个使用BeautifuleSoup爬图片pic的代码的例子 使用 BeautifulSoup下载网页图片到本地文件夹

奔跑的犀牛先生 2979

pyhon爬虫—爬取原创力文档(全面解析)

寒假时收到了一个小任务,在百度上下载一些“规范文档”。阴差阳错下,找到了原创力文档这个网站,在里面我找到了所需的全部文档。但是,因为在网站内下载文档需要点小代价,所以我写下了这个爬虫。在此分享一下。

weixin_46184311的博客 4万+
上一篇: 小滴课堂-学习笔记:互联网公司Javaweb项目三层目录结构和MVC知识
下一篇: 小滴课堂-学习笔记:Javaweb开发核心知识之Listener监听器
dev666
博客等级 码龄9年 100粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值