网站建设备案多长时间重庆市公司网站备案在哪了

bicheng/2026/1/16 19:57:45/文章来源:
网站建设备案多长时间,重庆市公司网站备案在哪了,万网 网站 流程,手机站建设文件上传一个经常用到的功能#xff0c;它有许多中实现的方案。 页面表单 RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) 自定义数据规范 http协议上传 页面控件(flash/html5/act…文件上传一个经常用到的功能它有许多中实现的方案。 页面表单 RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) RFC1897规范 http协议上传 页面控件(flash/html5/activeX/applet) 自定义数据规范 http协议上传 页面控件(flash/html5/activeX/applet) FTP协议上传 页面控件(flash/html5/activeX/applet) 自定义协议 用apache common upload组件实际就是采用的“页面表单 RFC1897规范 http协议上传”实现方式需要实现的技术点 1. 多文件数据的提交 2. 文件数据包接收存储功能 3. 文件数据上传进度 4. WEB页面无刷新异步提交 时序图 文件上传时序图文件上传进度获取时序图 实现思路 1. 多文件数据的提交 在WEB页面采用多个input typefile利用form表单进行文件提交 2. 文件数据包接收存储功能 服务端采用servlet利用apache common upload组件接收解析数据包接收解析的过程中保存进度到session, 文件接收完毕后保存到指定目录 3. 文件数据上传进度 在WEB页面在界面写一个定时器定时访问服务器提供上传进度获取功能的servlet获取文件上传进度信息 4. WEB页面无刷新异步提交 利用iframe来实现WEB页面无刷新异步上传 关键代码 UploadFileServlet.java Java代码  package com.test.servlet;    import java.io.File;  import java.io.IOException;  import java.io.Writer;  import java.util.Iterator;  import java.util.List;    import javax.servlet.ServletException;  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.FileUploadBase.FileSizeLimitExceededException;  import org.apache.commons.fileupload.disk.DiskFileItemFactory;  import org.apache.commons.fileupload.servlet.FileCleanerCleanup;  import org.apache.commons.fileupload.servlet.ServletFileUpload;  import org.apache.commons.io.FileCleaningTracker;  import org.apache.commons.io.FileUtils;  import org.apache.commons.io.FilenameUtils;  import org.apache.commons.io.IOUtils;  import org.apache.commons.lang3.ArrayUtils;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;    /**  * 文件上传数据接收类  *   * author chengqi  *  */  public class UploadFileServlet extends HttpServlet {        /** 日志对象*/      private Log logger  LogFactory.getLog(this.getClass());        private static final long serialVersionUID  1L;        /** 上传目录名*/      private static final String uploadFolderName  uploadFiles;        /** 上传临时文件存储目录*/      private static final String tempFolderName  tempFiles;        /** 上传文件最大为30M*/       private static final Long fileMaxSize  30000000L;         /** 允许上传的扩展名*/      private static final String [] extensionPermit  {txt, xls, zip};        /** 统一的编码格式*/      private static final String encode  UTF-8;        Override      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {          logger.info(UploadFileServlet#doPost() start);          try {              String curProjectPath  this.getServletContext().getRealPath(/);              String saveDirectoryPath  curProjectPath  /  uploadFolderName;              String tempDirectoryPath  curProjectPath  /  tempFolderName;              File saveDirectory  new File(saveDirectoryPath);              File tempDirectory  new File(tempDirectoryPath);              logger.debug(Project real path [  saveDirectory.getAbsolutePath()  ]);              //上传时产生的临时文件的默认保存目录              logger.debug(Temp files default save path [  System.getProperty(java.io.tmpdir)  ]);              DiskFileItemFactory factory  new DiskFileItemFactory();              //DiskFileItemFactory中DEFAULT_SIZE_THRESHOLD10240表示如果上传文件大于10K则会产生上传临时文件              //上传临时文件的默认目录为java.io.tmpdir中保存的路径根据操作系统的不同会有区别                            if(!tempDirectory.exists()) {                  tempDirectory.mkdir();              }              //重新设置临时文件保存目录              factory.setRepository(tempDirectory);                //设置文件清除追踪器文件上传过程中产生的临时文件会在              FileCleaningTracker fileCleaningTracker  FileCleanerCleanup.getFileCleaningTracker(this.getServletContext());              factory.setFileCleaningTracker(fileCleaningTracker);                ServletFileUpload upload  new ServletFileUpload(factory);                //设置文件上传进度监听器              FileProcessListener processListener  new FileProcessListener(request.getSession());              upload.setProgressListener(processListener);                // 设置文件上传的大小限制              upload.setFileSizeMax(fileMaxSize);                // 设置文件上传的头编码如果需要正确接收中文文件路径或者文件名              // 这里需要设置对应的字符编码为了通用这里设置为UTF-8              upload.setHeaderEncoding(encode);                //解析请求数据包              ListFileItem fileItems  upload.parseRequest(request);              //遍历解析完成后的Form数据和上传文件数据              for (IteratorFileItem iterator  fileItems.iterator(); iterator.hasNext();) {                  FileItem fileItem  iterator.next();                  String fieldName  fileItem.getFieldName();                  String name  fileItem.getName();                  //如果为上传文件数据                  if(!fileItem.isFormField()) {                      logger.debug(fieldName[  fieldName  ] fileName[  name  ] );                      if(fileItem.getSize()  0) {                          String fileExtension  FilenameUtils.getExtension(name);                          if(!ArrayUtils.contains(extensionPermit, fileExtension)) {                              throw new NoSupportExtensionException(No Support extension.);                          }                          String fileName  FilenameUtils.getName(name);                          FileUtils.copyInputStreamToFile(fileItem.getInputStream(),                                   new File(saveDirectory, fileName));                      }                  } else { //Form表单数据                      String value  fileItem.getString(encode);                      logger.debug(fieldName[  value  ] fieldValue[  fieldName  ]);                  }              }              responseMessage(response, State.OK);          } catch(FileSizeLimitExceededException e) {               logger.error(e.getMessage(), e);              responseMessage(response, State.OVER_FILE_LIMIT);          } catch(NoSupportExtensionException e) {               logger.error(e.getMessage(), e);              responseMessage(response, State.NO_SUPPORT_EXTENSION);          } catch(Exception e) {              logger.error(e.getMessage(), e);              responseMessage(response, State.ERROR);          } finally {              //清除上传进度信息              request.getSession().removeAttribute(fileUploadProcess);          }          logger.info(UploadFileServlet#doPost() end);       }        public enum State {          OK(200, 上传成功),          ERROR(500, 上传失败),          OVER_FILE_LIMIT(501, 超过上传大小限制),          NO_SUPPORT_EXTENSION(502, 不支持的扩展名);            private int code;          private String message;          private State(int code, String message) {              this.code  code;              this.message  message;          }            public int getCode() {              return code;          }          public String getMessage() {              return message;          }        }        /**      * 返回结果函数      * param response      * param state      */      private void responseMessage(HttpServletResponse response, State state) {          response.setCharacterEncoding(encode);          response.setContentType(text/html; charset  encode);          Writer writer  null;          try {              writer  response.getWriter();              writer.write(script);              writer.write(window.parent.fileUploadCallBack({\code\:  state.getCode() ,\message\:\  state.getMessage() \}););              writer.write(/script);              writer.flush();              writer.close();          } catch(Exception e) {              logger.error(e.getMessage(), e);          } finally {              IOUtils.closeQuietly(writer);          }      }      }  GetFileProcessServlet.java Java代码  package com.test.servlet;    import java.io.IOException;  import java.io.Writer;    import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;    import org.apache.commons.io.IOUtils;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;    /**  * 文件上传进度获取Servlet  *   * author chengqi  *  */  public class GetFileProcessServlet extends HttpServlet {        /** 日志对象*/      private Log logger  LogFactory.getLog(this.getClass());        private static final long serialVersionUID  1L;        Override      protected void doGet(HttpServletRequest request, HttpServletResponse response)              throws ServletException, IOException {          logger.info(GetFileProcessServlet#doGet start);          String fileUploadPercent  (String)request.getSession().getAttribute(fileUploadProcess);          Writer writer  null;          try {              writer  response.getWriter();              logger.info(percent:  fileUploadPercent);              IOUtils.write(fileUploadPercent  null ? 0% : fileUploadPercent, writer);              writer.flush();              writer.close();          } catch(Exception e) {              logger.error(e.getMessage(), e);          } finally {              IOUtils.closeQuietly(writer);          }          logger.info(GetFileProcessServlet#doGet end);      }    }  FileProcessListener.java Java代码  package com.test.servlet;    import java.text.NumberFormat;    import javax.servlet.http.HttpSession;    import org.apache.commons.fileupload.ProgressListener;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;    /**  * 文件进度监听器  *   * author chengqi  *  */  public class FileProcessListener implements ProgressListener{        /** 日志对象*/      private Log logger  LogFactory.getLog(this.getClass());        private HttpSession session;        public FileProcessListener(HttpSession session) {          this.session  session;        }              public void update(long pBytesRead, long pContentLength, int pItems) {          double readByte  pBytesRead;          double totalSize  pContentLength;          if(pContentLength  -1) {              logger.debug(item index[  pItems  ]   pBytesRead   bytes have been read.);          } else {              logger.debug(item index[  pItems  ]   pBytesRead   of   pContentLength   bytes have been read.);              String p  NumberFormat.getPercentInstance().format(readByte / totalSize);              session.setAttribute(fileUploadProcess, p);          }      }    }  apacheUploadDemo.html Html代码  !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd  html  head      titleApache common实现基本文件上传/title      meta http-equivContent-Type contenttext/html; charsetUTF-8      script typetext/javascript srcjs/jquery/jquery-1.9.1.js/script      script typetext/javascript srcjs/jquery/jquery.form.js/script      script typetext/javascript        //定时器对象      var uploadProcessTimer  null;        $(function (){          //绑定定时器开始操作到提交按钮          $(input[typesubmit]).click(function () {              //启动上传进度查询定时器              uploadProcessTimer  window.setInterval(getFileUploadProcess, 20);          })      });        //获取文件上传进度      function getFileUploadProcess() {          $.get(/upload/getFileProcessServlet, function(data) {              $(#fileUploadProcess).html(data);          });      }        //上传完成后由iframe返回脚本自动调用      function fileUploadCallBack(res) {          //清除定时器          if(uploadProcessTimer) {              window.clearInterval(uploadProcessTimer);          }          var message  res[message];          var code  res[code];          if(code ! 200) {              $(#fileUploadProcess).html(0%);          }          alert(message);      }        /script  /head  body  h2上传文件1/h2    用户信息  br/  form idtestForm action/upload/uploadServlet methodpost enctypemultipart/form-data targetiframeUpload      姓名input namename typetext br/      附件1input namefile1 typefile  br/      附件2input namefile2 typefile  br/      brbr      input typesubmit value提交 br/  /form  上传进度label idfileUploadProcess/label  iframe nameiframeUpload src width350 height35 frameborder0  SCROLLINGno styledisplay:NONE/iframe     /body  /html  总结 虽然使用apache common upload组件实现了文件上传但是从上传的效果来看并不是一个很完美的解决方案。 有如下缺点 1. 当有多个文件上传时无法知道单个文件的上传进度因为文件上传消息中根本就没有关于单个文件大小的信息 文件上传消息 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charsetUTF-8 Transfer-Encoding: chunked Date: Tue, 22 Apr 2014 07:45:45 GMT POST /upload/uploadServlet HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8 Accept-Language: zh-cn,zh;q0.8,en-us;q0.5,en;q0.3 Accept-Encoding: gzip, deflate Referer: http://localhost:8080/upload/apacheUploadDemo.html Cookie: JSESSIONID33498CE814284D67F957CA53D45F0174 Connection: keep-alive Content-Length 2363 Content-Type multipart/form-data; boundary---------------------------189163093917262 -----------------------------189163093917262 Content-Disposition: form-data; namename  -----------------------------189163093917262 Content-Disposition: form-data; namefile1; filenameNew Text Document.txt Content-Type: text/plain 文件数据 -----------------------------189163093917262 Content-Disposition: form-data; namefile2; filenameNew Text Document (2).txt Content-Type: text/plain 文件数据 -----------------------------189163093917262-- 2. 浏览器必须将所有文件读取完毕才开始上传并且是一次性提交所有的数据文件在互联网环境下会http连接超时大文件无法上传成功。 3. 服务端判断是否超过大小限制是通过计算接收数据的累积字节数和限制大小比较这种情况下如果限制大小是30M那么在服务端已经读取了30M完成后才会抛出异常多余的消耗的服务器的内存和硬盘空间 所以基于这些原因页面表单 RFC1897规范 http协议上传 后台apache common upload组件接收的这种解决方案不适合解决WEB页面一次多文件上传大文件上传情况比较适合一次单个小文件附件的情况如博客附件登记照片上传预览等情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做毕业设计的参考文献网站wordpress标签加icon

1024“程序员节”,58同城招聘研究院发布程序员行业大数据报告显示,程序员男性占比高达87.29%。 作者:朝晖 1024“程序员节”,58同城招聘研究院发布程序员行业大数据报告显示,程序员男性占比高达87.29%,北…

网站设计制作托管维护翻页h5制作软件

java实现pdf转word的办法有: 1、pdfbox poi 2、free spire.pdf 3、aspose-pdf free spire.pdf 的效果比aspose-pdf稍差一些,但是 aspose-pdf 是付费的,spire.pdf也有付费版本

熟练做网站需要了解什么怎样创办自己的公众号

说明 AP510X 是一系列外围电路简洁的单路线性 LED 恒 流芯片,适用于 3-60V 电压范围的 LED 恒流调光 领域。 AP510X 采用我司专利算法,可以实现高精度的恒 流效果,输出电流恒流精度≤ 3 %,电源供电工作 范…

ps制作个人网站首页网站建设自助建站云建站

在工作中发现mybatis默认的连接池POOLED,运行时间长了会报莫名其妙的连接失败错误。因此采用阿里巴巴的Druid数据源(码云链接 ,中文文档链接)。 mybatis更多数据源参考博客链接 。 1 环境 eclipse mars2 maven3.3.9 mysql5.7 2 …

唐山培训网站建设世代网络高端企业网站建设设计功能公司

网址不太好访问的话,请从下面我提供的分享下载 Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x 此资源适配 cuda11.x 将bin和include文件夹里的文件,分别复制到C盘安装CUDA目录的对应文件夹里 安装cuda时自动设置了 CUDA_PATH_V11_8 及path C:\Progra…

做网站需要用到什么技术无代码网站开发平台有哪些

作者:古琦 在现代软件架构中,微服务已成为构建可扩展和灵活应用程序的流行方式。每个微服务负责应用程序的一部分功能,它们共同工作以提供完整的服务。由于微服务架构的分散特性,监控变得至关重要,有效的微服务监控是…

wordpress网站排名婚介 东莞网站建设

文章目录 概要样例代码 概要 当第一次运行服务端时正常,第二次运行时出现Bind failed问题。 在实际使用中,如果您尝试启动一个服务端程序并且遇到了 “Bind failed” 的错误信息,这通常意味着尝试绑定(bind)的端口已…

邢台网站建设公司wordpress添加语系

个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 文章目录 前言正则表达式正则表达式语法正则表达式的特点捕获组实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)&#xff0c…

龙岗个性化网站建设价格低优秀网站案例

在我们深入了解 Angular 2 中 NgModule、Component、Injectable 等常见的装饰器之前,我们要先了解 TypeScript 中的装饰器。装饰器是一个非常酷的特性,最早出现在 Google 的 AtScript 中,它出现的目的是为了让开发者,开发出更容易…

企业网站seo推广网站开发实习总结

嵌入式的发展怎么样? 嵌入式系统领域一直在迅速发展,伴随着物联网、智能设备、汽车电子、医疗设备等应用的不断增加,对嵌入式技术的需求也在不断扩大。因此,嵌入式领域仍然是一个充满机会的领域,为专业人士提供…

建设银行客户投诉网站网站建设预算描述

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

wordpress网站怎么百度的到做外贸需要网站

目录 2386. 找出数组的第 K 大和 题目描述: 实现代码与解析: 优先级队列(小顶堆) 原理思路: 2386. 找出数组的第 K 大和 题目描述: 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子…

汝州网站建设汝州秘塔猫ai写作官网

1.把GameInfo.cs PlayerModel.cs Vector3.cs Vector4.cs PlayerStateConstans.cs GameState.cs依次粘到model文件夹中,此时项目没有错误,如下图所示; 对应处所修改的代码如下: case LoginProtocol.LOGIN_SRES://1 {Debug.Log(&qu…

做设计网站模块的网站微信小程序开发需要哪些技术

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…

如何做120急救网站比价网站模板

目标网址:https://zbcg.sznsyy.cn/homeNotice 测试时间: 2024-01-03 1 老规矩,打开Chrome无痕浏览,打开链接,监测网络,通过刷新以及上下翻页可以猜测出数据的请求是通过接口frontPageAnnouncementList获取的,查看返回可以看出来数据大概率是经过aes加密的,如图: 通过查看该请…

电子商务网站设计原理名词解释app软件一键生成工具

Care-coordination: Gain-sharing Agreements in Bundled Payment Models 分析一下这篇文章,这篇文章于2021年发表在POMS上,但是引用量没有那么高。这篇文章涉及到医疗捆绑支付,应该可以学习一下。 文章研究一个在一个以最小成本为目标的质…

网站建设专业性上海传媒公司总裁李健

题目 方法 dummy节点 链表的第一个结点,因为没有前驱结点,存在同时删除前驱和后继的情况,这时候我们需要人为构造dummy节点——人为制造出来的第一个结点的前驱结点,也就是说,在可能操作head节点时,我们可…

怎么做网站优化排名到前面wordpress发布视频

大数据仓库开发规范示例 一、前提概要二、数仓分层原则及定义2.1 数仓分层原则2.2 数仓分层定义 三、数仓公共开发规范3.1 分层调用规范3.2 数据类型规范3.3 数据冗余规范3.4 NULL字段处理规范3.5 公共字段规范3.6 数据表处理规范3.7 事实表划分规范 四、数仓各层开发规范4.1 分…

海口模板建站定制为什么大网站的百度快照更新速度慢还排第一

Flask维护者:李辉, 最近看b站的flask相关,发现了这个视频:[PyCon China 2023] 濒危 Flask 扩展拯救计划 - 李辉_哔哩哔哩_bilibili 李辉讲他在维护flask之余,开发了apiflask这个依托flask的框架。GitHub - apiflask/a…

建设网站费用入什么科目小语种外贸建站

目录 ❀expect命令运用于bash❀ expect使用原理 expet使用场景 常用的expect命令选项 Expect脚本的结尾 常用的expect命令选参数 Expect执行方式 单一分支语法 多分支模式语法第一种 多分支模式语法第二种 在shell 中嵌套expect Shell Here Document(内…