1、http下載是怎麼通過數據包傳輸數據的?
HTTP 協議定義伺服器端和客戶端之間文件傳輸的溝通方式。目前HTTP協議的版本是Http1.1。RFC 2616描述了回HTTP協議的具體信息。答
這個協議已經成為瀏覽器和Web站點之間的標准。
當訪問者點擊一個超鏈接的時候,將會給瀏覽器提交一個URL地址。通過這個URL地址,瀏覽器便知道去鏈接那個網站並去取得具體的頁面文件(也可能是一張圖片,一個pdf文件)。
HTTP工作的基礎就是,連接一個伺服器並開始傳輸文件到瀏覽器。
在http傳輸的過程中,被稱為客戶端的請求者向伺服器請求一個文件。
最基本的過程是:
1 客戶端連接一個主機;
2 伺服器接收連接,
3 客戶端請求一個文件,
4 伺服器發送一個應答.
在文件傳輸過程中,也可以理解成向你說的一邊發送一邊讀取,但是大文件是不可能在一個包中傳遞的,它們都被拆成了很多包,在廣域網傳輸過程中,由於經過了不同網路設備,期間報文還可能被拆小或合並,但最後到達接收端後都會被重新按發送次序組成一個文件。
斷點續傳很簡單,其實就是接受端在請求文件時通過一定的規則告訴發送端,自己這里已經收到了一個文件中的哪些部分,發送端直接將剩下的部分發給接收端。
2、如何用jsp將文件上傳至http文件伺服器
純jsp? 用Jersey插件可以實現,ftp也可以,我貼出jersey的代碼,比較簡單。導入jar包即可。
我這里是先從一台伺服器上把MP3文件下載下來,然後寫成二進制,再利用jersey發送的。發送的代碼就只有兩三行吧
/**
* 上傳歌曲到伺服器
* @param url 歌曲播放地址
* @param fileName 歌曲名稱
*
* @author 孫文祥
*/
public void upLoadToService(String url, String fileName) {
try {
URL ss = new URL(url);
HttpURLConnection urlc = (HttpURLConnection) ss.openConnection();
urlc.setDoInput(true);// 設置是否要從 URL 連接讀取數據,默認為true
urlc.connect();
InputStream bufin = urlc.getInputStream();
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
int len = bufin.available();
byte[] b = new byte[len];
int rc = 0;
while ((rc = bufin.read(b, 0, len)) > 0) {
swapStream.write(b, 0, rc);
}
byte[] in2b = swapStream.toByteArray();
// 實例化Jersey
Client client = new Client();
// 想要發送到的伺服器地址,記住,必須設置tomcat伺服器的許可權,不然無法上傳到tomcat
String path = Constant.SERVICE_URL + fileName;
// 設置請求路徑
WebResource resource = client.resource(path);
// 發送開始 PUT
resource.put(String.class, in2b);
} catch (Exception e) {
e.printStackTrace();
}
}
3、如何通過url方式從自己的伺服器上下載文件?
伺服器端搭建web伺服器,綁定IP地址,開啟http和ftp訪問目錄。然後把apk上傳到web伺服器的目錄下,在client上就可以通過IP訪問了
4、伺服器上面的文件如何進行http下載?
用HTTP下載的話文件得拷到網站目錄下,你看看你伺服器設置的網站目錄在哪裡,然後把文件拷過去
補充:
沒有HTTP伺服器自然是不能使用HTTP下載了,安裝個APACHE吧
5、c#中如何用http向文件伺服器上傳,下載文件
webClient類 上傳下載很方便!
6、使用HTTP協議實現文件批量傳輸從A伺服器到B伺服器。要求有客戶端和服務端。希望給出成功源碼參考。
就算你給15塊也沒人給你做。
7、為什麼伺服器上的FTP上傳速度達到4M左右而HTTP的下載速度才400K左右
你的伺服器,在執行上傳和下載的時候,還得看對方伺服器的網路情況。比如,你上傳和下載的目標伺服器是10M ADSL,那就很好解釋了,你這邊是上傳,他那邊是接收數據「下載」,速度自然很快。你這邊下載,他那邊上傳,自然就很慢。很多地方的上傳和下載帶寬都不「對稱」,典型的就是ADSL。
8、怎麼用http上傳一個文件到伺服器 python
首先,標准HTTP協議對上傳文件等表單的定義在這里:wwwietforg/rfc/rfc1867txt 大概數據包格式如下:
單文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain
... contents of file1.txt ...
--AaB03x--
多文件:
Content-type: multipart/form-data, boundary=AaB03x
--AaB03x
content-disposition: form-data; name="field1"
Joe Blow
--AaB03x
content-disposition: form-data; name="pics"
Content-type: multipart/mixed, boundary=BbC04y
--BbC04y
Content-disposition: attachment; filename="file1.txt"
其次,python上傳文件的幾種方法:
1 自己封裝HTTP的POST數據包:http//stackoverflowcom/questions/680305/using-multipartposthandler-to-post-form-data-with-python
import httplibimport mimetypesdef post_multipart(host, selector, fields, files): content_type, body = encode_multipart_formdata(fields, files) h = httplib.HTTP(host) h.putrequest('POST', selector) h.putheader('content-type', content_type) h.putheader('content-length', str(len(body))) h.endheaders() h.send(body) errcode, errmsg, headers = h.getreply() return h.file.read() def encode_multipart_formdata(fields, files): LIMIT = '----------lImIt_of_THE_fIle_eW_$' CRLF = '\r\n' L = [] for (key, value) in fields: L.append('--' + LIMIT) L.append('Content-Disposition: form-data; name="%s"' % key) L.append('') L.append(value) for (key, filename, value) in files:
9、客戶端通過Http Post方式上傳圖片到伺服器(網站,作用:接收post上來的圖片數據,並插入到資料庫)
bud a