HTTP POST File Nội dung trong JAVA
Trong kịch bản Web chúng tôi có hai phương pháp để gửi nội dung vào trang khác "GET" và "POST". Mặc dù trong "GET" phát triển phương pháp thích sự linh hoạt của việc kiểm tra các nội dung nhận được thông qua nhưng có giới hạn cho việc gửi dữ liệu. Khi so sánh với "GET" phương pháp "POST" thích sự linh hoạt cho việc gửi dữ liệu không giới hạn và sử dụng phương pháp này chúng ta cũng có thể gửi nội dung tập tin lớn. Bài viết này sẽ dạy cho bạn về cách chúng tôi có thể gửi nội dung tập tin rất lớn để lưu trữ từ xa. Để đạt được điều này chúng ta sẽ sử dụng URLConnection lớp cho phép bạn kết nối với trang URL từ xa.
Trang JSP Mã
= "java.util.*,java.net.URL,java.net.URLConnection,java.net.URLEncoder,java.io.*" %> <% @ Trang nhập khẩu = "java.util .*, java.net.URL, java.net.URLConnection, java.net.URLEncoder, java.io. *"%> <% URL url; URLConnection urlConn; DataOutputStream bản in; DataInputStream đầu vào; / / URL của Script từ xa. URL ( "http://localhost:8080/testpostdata" ) ; //testpostdata is the servlet name mới URL = url ("http://localhost:8080/testpostdata"); / / testpostdata là tên servlet / / Mở kết nối kênh URL mới. ( ) ; urlConn = url). openConnection (; / / Hãy để thời gian hệ thống chạy (RTS) biết rằng chúng tôi muốn đầu vào. true ) ; urlConn. setDoInput (đúng); / / Chúng tôi muốn làm đầu ra. true ) ; urlConn. setDoOutput (đúng); / / Chúng tôi muốn không có bộ nhớ đệm false ) ; urlConn. setUseCaches (false); / / Xác định nội dung tiêu đề loại. "Content-Type" , "application/x-www-form-urlencoded" ) ; urlConn ". setRequestProperty (" Content-Type, "application / x-www-form-urlencoded"); / / Gửi POST đầu ra. DataOutputStream ( urlConn. getOutputStream ( ) ) ; bản in = new DataOutputStream (urlConn. getOutputStream ()); String nội dung = URLEncoder . encode ( "Hitesh Agrawal" ) + "Name =" + URLEncoder. Mã hóa ("Hitesh Agrawal") + URLEncoder . encode ( "Software Engineer" ) ; "& Nghề =" + URLEncoder. Mã hóa ("kỹ sư phần mềm"); content ) ; bản in). writeBytes (nội dung; ; bản in). tuôn ra (; ; bản in). gần (; / / Lấy dữ liệu phản ứng. DataInputStream ( urlConn. getInputStream ( ) ) ; đầu vào = new DataInputStream (urlConn. getInputStream ()); String str; null != ( ( str = input. readLine ( ) ) ) ) trong khi (null (! = (str = đầu vào. Readline ()))) ( . println ( str ) ; Hệ thống.. Ra println (str); ) ; đầu vào). gần (; %>
Giải thích cho Mã JSP:
- Ở đây chúng tôi tạo ra một đối tượng của URLConnection bằng cách gọi openConnection () phương thức của một đối tượng URL
- Sau khi tạo đối tượng chúng ta thiết lập các thuộc tính cần thiết và tiêu đề cần thiết cho việc gửi dữ liệu
- Sau khi thiết lập các tiêu đề tôi đang viết các dữ liệu về OutputStream. Cuối cùng tôi đang đọc dữ liệu phản ứng.
testpostdata Mã Servlet
; nhập khẩu java.io. *; ; nhập khẩu javax.servlet .*; ; nhập khẩu javax.servlet.http .*; HttpServlet { lớp học thử nghiệm công cộng kéo dài HttpServlet ( init ( ServletConfig config ) throws ServletException { void init công cộng (ServletConfig config) throws ServletException ( ( config ) ; siêu (. init config); ) destroy ( ) { void công tiêu diệt () ( ) doPost ( HttpServletRequest request,HttpServletResponse response ) throws IOException , ServletException { void doPost công cộng (yêu cầu HttpServletRequest, HttpServletResponse phản ứng) throws IOException, ServletException ( request. getParameter ( "name" ) ; String name = yêu cầu (. GetParameter "tên"); request. getParameter ( "profession" ) ; String nghề = yêu cầu (. GetParameter "nghề nghiệp"); OutputStream F0; = name. getBytes ( ) ; byte buf [] = tên). getBytes (; FileOutputStream ( "/home/hitesh/Desktop/postcontent.txt" ) ; F0 = new FileOutputStream ("/ home / Hitesh / Desktop / postcontent.txt"); int i = 0 ; i < buf . length ; i ++ ) { for (int i = 0; i <buf;. chiều dài i + +) ( buf [ i ] ) ; F0. viết (buf [i]); ) ; F0). gần (; ; buf = null; ) )
Giải thích cho Mã Servlet:
- Trong doPost () i am lấy các thông số bằng cách sử dụng request.getParameter gửi
- Để crosscheck cho dù dữ liệu được gửi thành công i am tạo một tập tin và nội dung tập tin là những dữ liệu nhận được thông qua POST

Tìm kiếm Tuỳ chỉnh


































làm thế nào để chuyển các tập tin bằng cách sử dụng phương pháp này (nói một hình ảnh (jpeg)). Tôi đã thử nhưng chỉ có 9-10 byte nhận được chuyển giao.