Giriş
Http ile POST işlemi için 3 seçenek var.
1. application/x-www-form-urlencoded (the default)
2. multipart/form-data
3. text/plain
application/x-www-form-urlencoded
Sorgu string'i gibi şeyleri göndermek için kullanılır.
multipart/form-data
Dosya yüklemek için kullanılır. Dosya yüklemek için kullanılır. Açıklaması şöyle.
text/plain
Tam olarak ne işe yarar bilmiyorum.
HTML
Http ile POST işlemi için 3 seçenek var.
1. application/x-www-form-urlencoded (the default)
2. multipart/form-data
3. text/plain
application/x-www-form-urlencoded
Sorgu string'i gibi şeyleri göndermek için kullanılır.
multipart/form-data
Dosya yüklemek için kullanılır. Dosya yüklemek için kullanılır. Açıklaması şöyle.
The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters. The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.
text/plain
Tam olarak ne işe yarar bilmiyorum.
HTML
Dosya yüklemek için tarayıcı tarafında 2 çözüm var
1. <form> tag'ini kullanmak
2. <input> tag'ini type="file" şeklinde kullanmak ve AJAX çağrısı yapmak. AJX kullanımı tüm sayfayı tekrar yenilemeye gerek olmadığı için tercih edilebilir
Örnek - HTML Form
Şöyle yaparız
<form method="post" action="fileuploadservlet" enctype="multipart/form-data"><input type="file" name="file1" /><input type="file" name="file2" /><input type="file" name="file3" /><input type="submit" value="Upload" /></form>
Örnek - AJAX
Şöyle yaparız. Burada AJAX kütüphanesi olarak tarayıcıda yerleşik bulunan window.fetch kullanılıyor
<!-- HTML5 Input Form Elements --><input id="fileupload" type="file" name="fileupload" /><button id="upload-button" onclick="uploadFile()"> Upload </button><!-- Ajax JavaScript File Upload Logic --><script>async function uploadFile() {let formData = new FormData();formData.append("file", fileupload.files[0]);await fetch('/fileuploadservlet', {method: "POST",body: formData});alert('The file has been uploaded successfully.');}</script>
Post isteğinde önce Content-Type gönderilir. Bu alan multipart isteğin başladığını ve her bir part arasındaki ayracı belirtir. Tüm multipart'ın büyüklüğü Content-Length ile belirtilir.
Her bir part Content-Disposition ile başlar. Bu alan part'ın ismini ve kaydedilecekse dosya ismini belirtir.
Ayrıca part'ın tipi de Content-Type ile belirtilir.
Örnek
Post isteği şöyle başlar.
Content-Type: multipart/form-data; boundary=----------735323031399963166993862150
Content-Length: 8341
ÖrnekEğer metin göndereceksek şöyle bir html görürüz.
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="text1"
mytext
ÖrnekEğer a.txt dosyasını göndereceksek şöyle bir html görürüz.
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file1"; filename="a.txt"
Content-Type: text/plain
Content of a.txt.
ÖrnekEğer html göndereceksek şöyle bir html görürüz.
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file2"; filename="a.html"
Content-Type: text/html
<!DOCTYPE html><title>Content of a.html.</title>
ÖrnekEğer octect göndereceksek şöyle bir html görürüz.
-----------------------------735323031399963166993862150
Content-Disposition: form-data; name="file3"; filename="binary"
Content-Type: application/octet-stream
Byte'lar
ÖrnekContent-Length tüm parçaların toplam uzunluğu verir. Şöyle yaparız.
Content-Type: multipart/form-data; boundary=---------------------------1294919323195
Content-Length: 502
-----------------------------1294919323195
Content-Disposition: form-data; name="number"
5555555555
-----------------------------1294919323195
Content-Disposition: form-data; name="clip"
rickroll
-----------------------------1294919323195
Content-Disposition: form-data; name="upload_file"; filename=""
Content-Type: application/octet-stream
-----------------------------1294919323195
Content-Disposition: form-data; name="tos"
agree
-----------------------------1294919323195--
Hiç yorum yok:
Yorum Gönder