A good example of JSP uploading

xiaoxiao2021-03-06  40

Document upload principle Simple implementation

To implement file upload, we must first understand the HTTP request of the uploaded file. The following simple application demonstrates how to upload files and write the original data of the HTTP request to the file. Use the text editor to see the file to understand the format of the request. On this basis, we can extract the name, file content of the upload file, the content, and other information whose mixed.

Here we write a simple HTML page UP.html, provide a form, the user selects the file from here and uploads the file to the server.

file upload </ title></p> <p></ hEAD></p> <p><body></p> <p><form action = "Upjsp.jsp" ENCTYPE = "Multipart / Form-Data" Method = Post></p> <p><br /></p> <p>Company: <input type = "text" name = "company" /></p> <p><br /></p> <p>Select the file to upload <input type = "file" name = "filename" /></p> <p><br /></p> <p><Input Type = "Submit" Value = "Upload" /></p> <p></ form></p> <p></ body></p> <p></ html></p> <p>Note that <form> marks have an enctype property, the attribute value is "Multipart / Form-Data". There is also a type of Type for File is used to select the upload file.</p> <p>The form of the form of the form is Upjsp.jsp, which is sent to the Upjsp.jsp file. Upjsp.jsp calls a JavaBean called upbean.</p> <p>The procedure is as follows:</p> <p><jsp: usebean id = "thebean" scope = "page" class = "upbean" /></p> <p><%</p> <p>TheBean.doupload (Request);</p> <p>%></p> <p>Below is the implementation code of Upbean:</p> <p>Import java.io. *;</p> <p>Import javax.servlet.http.httpservletRequest;</p> <p>Import javax.servlet.http.httpservletResponse;</p> <p>Import javax.servlet.servletinputStream;</p> <p>Public class upbean {</p> <p>Public void Doupload (httpservletRequest request) throws</p> <p>IOEXCEPTION {</p> <p>PrintWriter PW = New PrintWriter</p> <p>New BufferedWriter (New FileWriter ("Test.txt")))))</p> <p>ServletinputStream in = request.getinputStream ();</p> <p>INT i = in.read ();</p> <p>While (i! = -1) {</p> <p>PW.Print ((char) i);</p> <p>i = in.read ();</p> <p>}</p> <p>PW.Close ();</p> <p>}</p> <p>}</p> <p>This JavaBean writes the form of the HTTPSERVLETREQUEST object to the Test.txt file.</p> <p>Select up to one text or web file. After clicking the "Upload" button, the form is sent to the Upjsp.jsp file, and the uploaded files are sent together. Upjsp.jsp files do not send any answers to your browser, but it generates a Test.txt file. Open the Test.txt file, we can see the contents of the upload file and some uploaded information. ---------------------------- 7d15340138</p> <p>Content-disposition: form-data; name = "author"</p> <p>A. Christie</p> <p>---------------------------- 7d15340138</p> <p>Content-disposition: form-data; name = "Company" Abisco</p> <p>---------------------------- 7d15340138</p> <p>Content-disposition: form-data; name = "filename"; filename = "c: /123data/abisco.html"</p> <p>Content-Type: Text / HTML</p> <p>/ * Here is the uploaded content * /</p> <p>It can be seen that the HTTP request body contains all form inputs, including uploaded files. The separation of these input data is implemented by a separator. The separator consists of a series of "-" characters and a random number. In the above example, the separator is "-------------------------- 7D15340138. The last separator ends the request body, and there are two "-" symbols behind this separator.</p> <p>For non-file type input data, the separator follows the following line: Content-Disposition: form-data; name = inputname. Wherein InputName is the name of the form element. For example: content-disposition: form-data; name = "author". Behind this line of content, followed by two consecutive carriage return and form elements.</p> <p>For file type input domain, there are two lines of content behind the separator. The first line content contains the name of the input element and the full path to the upload file on the client. Note that the Windows browser sets the file path, and UNIX / Linux and the Mac browser only send file names.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-71986.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="71986" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.047</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = '_2B4JUZBUZPZzaKuu4YpfWdnP6mKXFD_2FfZcaQ3utCma_2F_2FeuJkjhuwt7q3AJOI_2F1GoiPvmBgJcIVpW2T828gD2_2Ffw_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>