国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于java文件上傳-原始的Servlet方式

基于java文件上傳-原始的Servlet方式

2020-12-11 15:13Java教程網 Java教程

下面小編就為大家帶來一篇基于java文件上傳-原始的Servlet方式。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言:干了這幾個項目,也做過幾次文件上傳下載,要么是copy項目以前的代碼,要么是百度的,雖然做出來了,但學習一下原理弄透徹還是很有必要的。剛出去轉了一圈看周圍有沒有租房的,在北京出去找房子是心里感覺最不爽的時候,沒有歸屬感,房租還不便宜,rt,不能好高騖遠,還是腳踏實地一點一點學技術吧,終將有一日,工資會漲的。

java文件上傳

傳統的文件上傳,不用jquery插件的話,就是用form表單提交,項目里用過uploadify,可以異步上傳文件,原理我也沒研究。現在說傳統的form表單上傳文件。

文件上傳核心:

用<input type=”file”/> 來聲明一個文件域。樣式如 文件:_____ <瀏覽>.

必須使用post方式提交表單。

必須設置表單的類型為multipart/form-data.是設置這個表單傳遞的不是key=value值。傳遞的是字節碼.

新建web項目:

jsp form表單:enctype(編碼類型)的默認值就是 application/x-www-form-urlencoded

基于java文件上傳-原始的Servlet方式 基于java文件上傳-原始的Servlet方式瀏覽器查看 http報文:基于java文件上傳-原始的Servlet方式主要參數:accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 接收服務器返回的類型,*/*表示所有。referer:http://localhost:8888/upload/ 來自哪個網站accept-language:zh-cn,zh;q=0.8 :請求回應中首選的語言為簡體中文accept-encoding:gzip, deflate, br支持的壓縮格式user-agent:mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/56.0.2924.87 safari/537.36 用戶瀏覽器類型host:localhost:8888 主機地址connection:keep-alive 報文發送完畢后仍然保持連接cache-contrp: max-age=0 緩存content-length: 41 41字節對文件上傳來說,重要的參數是:content-type: application/x-www-form-urlencoded這個參數只有post請求才有,默認就是application/x-www-from-urlencoded ,content-type表示正文類型,get方式沒有正文,因為參數在url里。在servlet里可以用request對象取到content-type:request.getheader("content-type"); 默認的值為 application/x-www-form-urlencoded,如果是get請求,則 request.getheader("content-type");為null。下圖是get請求時的http頭信息:基于java文件上傳-原始的Servlet方式  

文件上傳,必須設置enctype="multipart/form-data"
from表單:基于java文件上傳-原始的Servlet方式上傳一個word:基于java文件上傳-原始的Servlet方式此時的http消息: content-type:multipart/form-data; boundary=----webkitformbou ndarywywq3v1nemo0bpfm 。
其中的 boundary=----webkitformboundary44gvxakosg3tk3or 指的是文件上傳的分隔符。
基于java文件上傳-原始的Servlet方式看請求的報文: boundry=xxxxx 標識文件開始,也有文件頭,說的是上傳的數據的類型,第一個input 是text類型,第二個是二進制,content-type 是application/octet-stream 表示 二進制流。上傳圖片,content-type: image/jpeg,上傳文本,content-type: text/plain。基于java文件上傳-原始的Servlet方式 二進制流的接收:當表單類型是post類型,切enctype="multipart/form-data",則所有的數據都是以二進制流的形式向服務器上傳,所以request.getparameter("xxx") 永遠為null,只能通過req.getinputstream(); 獲取正文。上傳一個txt:基于java文件上傳-原始的Servlet方式servlet:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.lhy.upload;
 
import java.io.bufferedreader;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.inputstreamreader;
import java.io.outputstream;
import java.io.printwriter;
 
import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
 
/**
 *
 * @author administrator
 *
 */
@webservlet(name="uploadservlet",urlpatterns="/uploadservlet")
public class uploadservlet extends httpservlet{
 
 @override
 protected void doget(httpservletrequest req, httpservletresponse resp)
   throws servletexception, ioexception {
//  this.dopost(req, resp);
 }
 
 @override
 protected void dopost(httpservletrequest req, httpservletresponse resp)
   throws servletexception, ioexception {
  
  req.setcharacterencoding("utf-8");
  string contenttype = req.getheader("content-type");
  system.out.println("contenttype: "+contenttype);
  string name = req.getparameter("name");
  system.out.println(name);//null
  
  inputstream is = req.getinputstream();
  
  
//  ------webkitformboundaryg0ulv7evfq1k2pba
//  content-disposition: form-data; name="image"; filename="靜夜思.txt"
//  content-type: text/plain
//
//
//  ------webkitformboundaryg0ulv7evfq1k2pba--
  bufferedreader br = new bufferedreader(new inputstreamreader(is));
  string firstline = br.readline();//第一行,分隔符
  string filename = br.readline();
//  content-disposition: form-data; name="image"; filename="jingyesi.txt"
  filename = filename.substring(filename.lastindexof("=")+2,filename.length()-1);
  
  br.readline();
  br.readline();
  string data = null;
  //獲取當前項目的運行路徑
  string path = getservletcontext().getrealpath("/up");
  printwriter pw = new printwriter(path+"/"+filename);
  while((data = br.readline()) != null){
   if(data.equals(firstline+"--")){
    break ; //讀到了文件尾
   }
   pw.println(data);
  }
  pw.flush();
  pw.close();
  is.close();
 
  
  /* fileoutputstream fos = new fileoutputstream(path+"/"+"b.doc");
//  byte[] b = new byte[1024];
  int len = 0;
  while((len = is.read()) != -1){
   fos.write(len);
  }
  fos.flush();
  fos.close();
  is.close();*/
 }
 
 
}

項目里:

基于java文件上傳-原始的Servlet方式基于java文件上傳-原始的Servlet方式

例子只是讀取了txt,其他的二進制需要使用inputstream讀取。

以上這篇基于java文件上傳-原始的servlet方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲成人精品一区 | 国产在线观看一区 | 亚洲在线电影 | 国产高清亚洲 | 日韩在线观看一区 | 亚洲免费精品 | 成人国产在线 | 成av在线 | 国产精品日韩精品 | 亚洲精品一区二区三区在线 | 亚洲va欧美va人人爽成人影院 | 免费在线看a| 精品第一区 | 欧美成人免费 | 国产精品一区二区久久 | 亚洲小视频 | 亚洲综合影院 | 国产成年人视频 | 免费午夜电影 | 久久精品一区二区国产 | 久久久久久综合 | 亚洲综合国产 | 在线免费av观看 | 日韩欧美国产精品综合嫩v 日韩a∨精品日韩在线观看 | 天天久久| 久久成人国产精品 | 欧美性久久 | 99re视频在线观看 | 日韩在线免费观看视频 | 自拍偷拍亚洲一区 | 精品视频在线视频 | 精品99在线 | 久久草 | 国产成人一区 | 久久亚洲精品中文字幕 | 亚洲国产高清在线 | 亚洲毛片 | 中文字幕91视频 | 青青国产在线视频 | 日本久久久久 | 久久久久久久97 |