当前位置: 首页 > news >正文

怎样查看一个网站的域名网站云空间大小

怎样查看一个网站的域名,网站云空间大小,使用网站模板快速建站教案,公司长沙建站在最初的 http 协议中#xff0c;没有上传文件方面的功能。RFC1867#xff08;Form-based File Upload in HTML.#xff09; 为 http 协议添加了这个功能。客户端的浏览器#xff0c;如 Microsoft IE, Mozila, Opera 等#xff0c;按照此规范将用 户指定的文件… 在最初的 http 协议中没有上传文件方面的功能。RFC1867Form-based File Upload in HTML. 为 http 协议添加了这个功能。客户端的浏览器如 Microsoft IE, Mozila, Opera 等按照此规范将用 户指定的文件发送到服务器。服务器端的网页程序如 php, asp, jsp 等可以按照此规范解析出用户 发送来的文件。 2.1客户端 简单来说RFC1867规范要求http协议增加了file类型的input标签用于浏览需要上传的文件。同时 要求FORM表单的enctype属性设置为“multipart/form-data”method属性设置为“post”即可下面是我们文 件上传页面的表单代码 form action%request.getContextPath()%/servlet/SimpleUpload enctypemultipart/form-data  methodpost 文本1input typetext nametext1 value文本1br 文件2input typetext nametext2 value文本2br 文件1input typefile namefile1br 文件2input typefile namefile2br 文件2input typefile namefile3br input typesubmit value开始上传 /form 2.2 服务器端 一个文件上传请求的消息实体由一系列根据 RFC1867Form-based File Upload in HTML.编码的项目 文本参数和文件参数组成。自己编程来解析获取这些数据是非常麻烦的还需要了解RFC1867规范对请 求数据编码的相关知识。FileUpload 可以帮助我们解析这样的请求将每一个项目封装成一个实现了FileItem 接口的对象并以列表的形式返回。所以我们只需要了解FileUpload的API如何使用即可不用管它们的底 层实现。让我们来看一个简单文件上传处理代码 DiskFileItemFactory factory  new DiskFileItemFactory(); ServletFileUpload uploader  new ServletFileUpload(factory); ListFileItem list  uploader.parseRequest(request); if (item.isFormField()){ // 处理普通表单域 String field  item.getFieldName();//表单域名 String value  item.getString(GBK); } else { //将临时文件保存到指定目录 String fileName  item.getName();//文件名称 String filepath  您希望保存的目录/  fileName; item.write(new File(filepath));//执行保存 } 怎么样简单吧下面我们来继续了解一些必须了解的API。 FileItem接口 org.apache.commons.fileupload.disk.DiskFileItem实现了FileItem接口用来封装单个表单字段元素的 数据。通过调用FileItem 定义的方法可以获得相关表单字段元素的数据。我们不需要关心DiskFileItem的具 体实现在程序中可以采用FileItem接口类型来对DiskFileItem对象进行引用和访问。FileItem类还实现了 Serializable接口以支持序列化操作。 下图是一个文件上传表单 上图表单提交的http数据包的内容 POST /demo/servlet/SimpleUpload HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword,  application/vnd.ms-excel, application/vnd.ms-powerpoint, */* Referer: http://127.0.0.1:8080/demo/simpleUpload.jsp Accept-Language: zh-cn Content-Type: multipart/form-data; boundary---------------------------7da1772c5504c6 UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727) Host: 127.0.0.1:8080 Content-Length: 184423 Connection: Keep-Alive Cache-Control: no-cache Cookie: JSESSIONIDBD8E58E5BAD9B559C0262077FB5E0B4E -----------------------------7da1772c5504c6 Content-Disposition: form-data; nametext1 郑州蜂鸟科技有限公司 -----------------------------7da1772c5504c6 Content-Disposition: form-data; nametext2 申林 -----------------------------7da1772c5504c6 Content-Disposition: form-data; namefile1; filenameC:\Documents and Settings\All Users\ Documents\My Pictures\示例图片\Blue hills.jpg Content-Type: image/pjpeg 大量二进制数据内容无法复制 ……. -----------------------------7da1772c5504c6 Content-Disposition: form-data; namefile2; filenameC:\Documents and Settings\All Users\ Documents\My Pictures\示例图片\Sunset.jpg Content-Type: image/pjpeg 大量二进制数据内容无法复制 ……. -----------------------------7da1772c5504c6 Content-Disposition: form-data; namefile3; filenameC:\Documents and Settings\All Users\ Documents\My Pictures\示例图片\Water lilies.jpg Content-Type: image/pjpeg 大量二进制数据内容无法复制 ……. 从第一行也就是请求行我们可以看出这是一个post请求。在请求头部部分我们可以看到这样 一个头部信息 Content-Type: multipart/form-data; boundary---------------------------7da1772c5504c6 其中红色部分说明该请求是一个multipart/form-data类型即多媒体类型的请求。蓝色部分boundary的值 定义了一个字段分隔界线。在消息体部分可以看出每个表单字段元素数据之间采用字段分隔界线进行分 割两个分隔界线间的内容称为一个分区每个分区中的内容包括两部分一部分是对表单字段元素进 行描述的描述头另外一部分是表单字段元素的主体内容。  通过对比描述头我们可以很容易区分文本字段和文件字段。不管是文件字段还是文本字段都有 name属性即该字段作为一个表单域的名字。而文件字段还有filename即上传文件本身的名字。另外 还有conten-type属性用于指明文件的类型。 每一个表单字段不管它是文本还是文件都被封装成 FileItem 对象我们称之为文件项当文件 项数据内容尺寸小于DiskFileItemFactory 的sizeThreshold 属性设置的临界值时直接保存在内存中否则 将数据流以临时文件的形式保存在 DiskFileItemFactory 的 repository 属性指定的临时目录中。临时文件 名形如“upload_00000005八位或八位以上的数字.tmp”。FileItem类内部提供了维护临时文件名中的 数值不重复的机制以保证了临时文件名的唯一性。另外如何保证临时文件能被及时清除释放宝贵 的系统资源是非常重要的我们将在后面讲解。  FileItem类常用的方法 1.  boolean isFormField()方法 isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单字段还是一个文件表单字 段如果是普通表单字段则返回true否则返回false。 2.  String getName()方法  getName方法用于获得文件上传字段中的文件名即表单字段元素描述头中的filename属性值如“C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Sunset.jpg”。如果FileItem类对象对 应的是普通表单字段getName方法将返回null。即使用户没有通过网页表单中的文件字段传递任何 文件但只要设置了文件表单字段的name属性浏览器也会将文件字段的信息传递给服务器 只是文件名和文件内容部分都为空但这个表单字段仍然对应一个FileItem对象此时 getName方法返回结果为空字符串读者在调用Apache文件上传组件时要注意考虑这个情况。 注意上面的数据包是通过IE提交所以是完整的路径和名称。如  C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Sunset.jpg。如果是其它浏览 器如火狐和Chromium则仅仅是名字没有路径如Sunset.jpg。 3.  String getFieldName()方法 getFieldName方法用于返回表单字段元素描述头的name属性值也是表单标签name属性的值。例 如“namefile1”中的“file1”。 4.  void write(File file)方法 write方法用于将FileItem对象中保存的主体内容保存到某个指定的文件中。如果FileItem对象中的主 体内容是保存在某个临时文件中该方法顺利完成后临时文件有可能会被清除。该方法也可将普通 表单字段内容写入到一个文件中但它主要用途是将上传的文件内容保存在本地文件系统中。 5.  String getString()方法 getString方法用于将FileItem对象中保存的数据流内容以一个字符串返回它有两个重载的定义形式 public java.lang.String getString() public java.lang.String getString(java.lang.String encoding) throws java.io.UnsupportedEncodingException 前者使用缺省的字符集编码将主体内容转换成字符串后者使用参数指定的字符集编码将主体内容 转换成字符串。如果在读取普通表单字段元素的内容时出现了中文乱码现象请调用第二个 getString方法并为之传递正确的字符集编码名称。 6.  String getContentType()方法 getContentType 方法用于获得上传文件的类型即表单字段元素描述头属性“Content-Type”的值 如“image/jpeg”。如果FileItem类对象对应的是普通表单字段该方法将返回null。 7.  boolean isInMemory()方法 isInMemory方法用来判断FileItem对象封装的数据内容是存储在内存中还是存储在临时文件中 如果存储在内存中则返回true否则返回false。 8.  void delete()方法 delete方法用来清空FileItem类对象中存放的主体内容如果主体内容被保存在临时文件中 delete方法将删除该临时文件。 尽管当FileItem对象被垃圾收集器收集时会自动清除临时文件但及时调用delete方法可以更早的 清除临时文件释放系统存储资源。另外当系统出现异常时仍有可能造成有的临时文件被永久 保存在了硬盘中。 9.  InputStream getInputStream()方法 以流的形式返回上传文件的数据内容。 10. long getSize()方法 返回该上传文件的大小以字节为单位。 DiskFileItemFactory类 将请求消息实体中的每一个项目封装成单独的DiskFileItem (FileItem接口的实现) 对象的任务 由 org.apache.commons.fileupload.FileItemFactory 接口的默认实现  org.apache.commons.fileupload.disk.DiskFileItemFactory 来完成。当上传的文件项目比较小时直接保 存在内存中速度比较快比较大时以临时文件的形式保存在磁盘临时文件夹虽然速度 慢些但是内存资源是有限的。 属性 1) public static final int DEFAULT_SIZE_THRESHOLD 将文件保存在内存还是 磁盘临时文件夹的默认临界值值为10240即10kb。 2) private File repository用于配置在创建文件项目时当文件项目大于临界值时使 用的临时文件夹默认采用系统默认的临时文件路径可以通过系统属性 java.io.tmpdir  获取。如下代码 System.getProperty(java.io.tmpdir); 3) private int sizeThreshold用于保存将文件保存在内存还是磁盘临时文件夹的临界值 构造方法 1) public DiskFileItemFactory()采用默认临界值和系统临时文件夹构造文件项工厂对象。 2) public DiskFileItemFactory(int sizeThreshold,File repository)采用参数指定临界值和系统临时 文件夹构造文件项工厂对象。 FileItem createItem() 方法 根据DiskFileItemFactory相关配置将每一个请求消息实体项目创建 成DiskFileItem 实例并返回。 该方法从来不需要我们亲自调用FileUpload组件在解析请求时内部使用。 void setSizeThreshold(int sizeThreshold) Apache文件上传组件在解析上传数据中的每个字段内容时需要临时保存解析出的数据以便 在后面进行数据的进一步处理保存在磁盘特定位置或插入数据库。因为Java虚拟机默认可以使 用的内存空间是有限的超出限制时将会抛出“java.lang.OutOfMemoryError”错误。如果上传的文件 很大例如800M的文件在内存中将无法临时保存该文件内容Apache文件上传组件转而采用临时 文件来保存这些数据但如果上传的文件很小例如600个字节的文件显然将其直接保存在内存中 性能会更加好些。 setSizeThreshold方法用于设置是否将上传文件已临时文件的形式保存在磁盘的临界值以字节 为单位的int值如果从没有调用该方法设置此临界值将会采用系统默认值10KB。对应的 getSizeThreshold() 方法用来获取此临界值。 void setRepository(File repository) setRepositoryPath方法用于设置当上传文件尺寸大于setSizeThreshold方法设置的临界值时将文件以 临时文件形式保存在磁盘上的存放目录。有一个对应的获得临时文件夹的 File getRespository() 方法。 注意当从没有调用此方法设置临时文件存储目录时默认采用系统默认的临时文件路径可以 通过系统属性 java.io.tmpdir 获取。如下代码 System.getProperty(java.io.tmpdir); Tomcat系统默认临时目录为“tomcat安装目录/temp/”。 ServletFileUpload 类 org.apache.commons.fileupload.servlet.ServletFileUpload类是Apache文件上传组件处理文件上传的 核心高级类所谓高级就是不需要管底层实现暴露给用户的简单易用的接口。 使用其 parseRequest(HttpServletRequest) 方法可以将通过表单中每一个HTML标签提交的数据封装 成一个FileItem对象然后以List列表的形式返回。使用该方法处理上传文件简单易用。 如果你希望进一步提高新能你可以采用 getItemIterator 方法直接获得每一个文件项的数据输 入流对数据做直接处理。 在使用ServletFileUpload对象解析请求时需要根据DiskFileItemFactory对象的属性 sizeThreshold临 界值和repository临时目录 来决定将解析得到的数据保存在内存还是临时文件中如果是临时 文件保存在哪个临时目录中。所以我们需要在进行解析工作前构造好DiskFileItemFactory对象 通过ServletFileUpload对象的构造方法或setFileItemFactory()方法设置 ServletFileUpload对象的 fileItemFactory属性。 ServletFileUpload继承结构 java.lang.Object |—org.apache.commons.fileupload.FileUploadBase |—org.apache.commons.fileupload.FileUpload |—org.apache.commons.fileupload.servlet.ServletFileUpload 构造方法 1) public ServletFileUpload()构造一个未初始化的实例需要在解析请求之前先调用 setFileItemFactory()方法设置 fileItemFactory属性。 2) public ServletFileUpload(FileItemFactory fileItemFactory)构造一个实例并根据参数 指定的FileItemFactory 对象设置 fileItemFactory属性。 ServletFileUpload类常用方法 1. public void setSizeMax(long sizeMax)方法 setSizeMax方法继承自FileUploadBase类用于设置请求消息实体内容即所有上传数据的最大 尺寸限制以防止客户端恶意上传超大文件来浪费服务器端的存储空间。其参数是以字节为单位的 long型数字。 在请求解析的过程中如果请求消息体内容的大小超过了setSizeMax方法的设置值将会抛出 FileUploadBase内部定义的SizeLimitExceededException异常(FileUploadException的子类)。如 org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException:  the request was rejected because its size (1649104) exceeds the configured  maximum (153600) 该方法有一个对应的读方法public long getSizeMax()方法。 2. public void setFileSizeMax(long fileSizeMax)方法 setFileSizeMax方法继承自FileUploadBase类用于设置单个上传文件的最大尺寸限制以防止客户 端恶意上传超大文件来浪费服务器端的存储空间。其参数是以字节为单位的long型数字。该方法有一个 对应的读方法public long geFileSizeMax()方法。 在请求解析的过程中如果单个上传文件的大小超过了setFileSizeMax方法的设置值将会抛出 FileUploadBase内部定义的FileSizeLimitExceededException异常(FileUploadException的子类)。如 org.apache.commons.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file1 exceeds its  maximum permitted size of 51200 characters. 3. public List parseRequest(javax.servlet.http.HttpServletRequest req) parseRequest 方法是ServletFileUpload类的重要方法它是对HTTP请求消息体内容进行解析的入口 方法。它解析出FORM表单中的每个字段的数据并将它们分别包装成独立的FileItem对象然后将这 些FileItem对象加入进一个List类型的集合对象中返回。 该方法抛出FileUploadException异常来处理诸如文件尺寸过大、请求消息中的实体内容的类型不 是“multipart/form-data”、IO异常、请求消息体长度信息丢失等各种异常。每一种异常都是 FileUploadException的一个子类型。 4. public FileItemIterator getItemIterator(HttpServletRequest request) getItemIterator方法和parseRequest 方法基本相同。但是getItemIterator方法返回的是一个迭代 器该迭代器中保存的不是FileItem对象而是FileItemStream 对象如果你希望进一步提高新能 你可以采用 getItemIterator 方法直接获得每一个文件项的数据输入流做底层处理如果性能不 是问题你希望代码简单则采用parseRequest方法即可。  5. public stiatc boolean isMultipartContent(HttpServletRequest req) isMultipartContent方法方法用于判断请求消息中的内容是否是“multipart/form-data”类型是则返 回true否则返回false。isMultipartContent方法是一个静态方法不用创建ServletFileUpload类的实例对 象即可被调用。 6. getFileItemFactory()和setFileItemFactory(FileItemFactory)方法 方法继承自FileUpload类用于设置和读取fileItemFactory属性。 7. public void setProgressListener(ProgressListener pListener) 设置文件上传进度监听器。关于监听器的具体内容将在后面学习。该方法有一个对应的读取 方法ProgressListener getProgressListener()。 8.public void setHeaderEncoding()方法 在文件上传请求的消息体中除了普通表单域的值是文本内容以外文件上传字段中的文件路 径名也是文本在内存中保存的是它们的某种字符集编码的字节数组Apache文件上传组件在读取 这些内容时必须知道它们所采用的字符集编码才能将它们转换成正确的字符文本返回。 setHeaderEncoding方法继承自FileUploadBase类用于设置上面提到的字符编码。如果没有设置 则对应的读方法getHeaderEncoding()方法返回null将采用HttpServletRequest设置的字符编码如果 HttpServletRequest的字符编码也为null则采用系统默认字符编码。可以通过一下语句获得系统默认 字符编码 System.getProperty(file.encoding)); 好到这里我们学习了主要的一些API足够我们来完成一个简单文件上传的功能了下一章 我们将一起来编写一个文件上传应用程序。 郑州蜂鸟科技有限公司 申林 QQ38185398  郑州软件开发兴趣小组群38236716 学软件开发到蜂鸟科技超强的师资力量 、完善的课程体系 、超低的培训价格 、真实的企业项目。 地址郑州市文化路丰产路口东50米丰产路21号SOHO世纪城西塔20楼F  电话0371-63839606  手机13838505572申老师 13673990036 许老师 QQ 1073422643  1群47614738 2群108157678   网址www.ntcsoft.com
http://wiki.neutronadmin.com/news/339588/

相关文章:

  • 在网络上做兼职的网站html5网站开发视频
  • 外贸建站是什么意思网站设计要学哪些
  • 手机网站建设选 朗创营销wordpress更改固定连接404
  • 网站建设实践描述没备案的网站收录
  • 做团购网站的公司大宗交易平台
  • 找人搭建网站多少钱精品网页设计
  • 网站建设写河北seo推广方法
  • 网站策划方案论文wordpress手机端404页面
  • 福清哪有做网站的地方网络推广引流软件
  • 知名网站名称重庆市建设工程信息网安全
  • 吉林省建设标准化网站南京网站制作公司
  • 网站建设免费教程服务器租用哪家好
  • 建设部网站官网造价工程师孙思新上海seo有哪些公司
  • 做药品网站有哪些内容八桂在线建设
  • 某网站优化方案淄博网站建设报价
  • 做网站 视频服务器网站管理系统
  • 软件app定制开发企业网站关键词优化排名应该怎么做
  • 新网做网站流程深圳保障性住房可以买卖吗
  • 腾讯网站备案腾讯企点怎么登录
  • 网站开发国内外研究状况wordpress模板论坛
  • 南通seo网站优化软件公司部门设置及职责划分
  • 做网站经营流量南宁网站建设公司seo优化
  • 博物馆网站建设策划书wordpress页面可以收录文章不收录
  • 大同本地做网站的廊坊网站建设外包
  • 张掖哪家公司做网站建设银行预约纪念钞网站
  • 网站 尺寸建设网站有哪些参考文献
  • 国内电子商务网站有哪些wordpress 短代码使用
  • 黄埭网站建设nginx即代理又做网站
  • 网站内容管理系统建设网站推广哪种方法最
  • 怎么做五个页面网站淘宝网络推广怎么做