III of the Web Development Technique Series - Document Upload

xiaoxiao2021-03-06  39

The second document upload

File upload is also a very common application in web development, common methods:

One. HTML tag

Usually we can select components in the background, such as Smartupload, etc. In the Struts framework, Struts uses a Common-FileUPload package that can be easily uploaded.

As shown below, the front page:

The Action processed in the background is as follows:

Package maoxiang.examples.Web.Actions;

Import java.io.file;

Import java.io.fileoutputstream;

Import java.io.ioException;

Import Java.io.InputStream;

Import maoxiang.common.web.GenericAction;

Import Maoxiang.examples.Web.Forms.uploadForm;

Import org.apache.struts.upload.formfile;

/ **

* @ Struts.Action path = "/ upload / upload"

Name = "UploadForm"

*

Scope = "request"

INPUT = "/ upload / upload1.jsp"

*

Validate = "True"

*

* /

Public final class uploadAction extends genericction {

protected boolean action () {

IF ("Upload" .Equals (getAction ())) {

LOG.INFO ("I am in Upload");

Try {

UploadForm Upload = (UploadForm) Form;

// Get uploaded files

Formfile file = UPLOAD.GETTHEFILE ();

// Save it to / example / temp

// String contextPath = getServlet (). GetServletContext (). GetRealPath (

//

"/ esamples / upload");

// Write the file into the TEMP file

InputStream Instream = file.getinputStream ();

File Temp = file.createTempfile ("Temp", String.Valueof (System

.currenttimemillis ()));

Log.info ((Temp.getabsolutePath ()));

FileOutputStream outstream = new fileoutputstream (TEMP);

INT BYTESREAD = 0;

Byte [] buffer = new byte [8192];

Long length = 0;

While ((BytesRead = Instream.read (buffer))! = -1) {

Outstream.write (buffer, 0, bytesread);

Length = bytesRead;

}

Instream.close ();

Outstream.close ();

Request.getSession (). SetAttribute ("Para1", Upload.getPara1 ());

Request.getations (). setttribute ("file", temp.getabsolutepath ());

Return True;

} catch (ioexception e) {

LOG.Error ("" error occurred while uploading file " E.getMessage ());

Return False;

}

}

Return False;

}

}

It seems that he and the general Action have no difference, it is very convenient.

Second. Special upload tool

Since the HTML tag is used, many features cannot be done. If the file is restricted before the upload, only the picture can be uploaded, the size can only be less than 2m. The HTML tag can only be uploaded to the background before it can be judged and prompt, and it is obviously not high.

The following is the upload tool made on SWT FileViewer:

Of course, there are some inconveniences in this way:

1. Require each user to download this program, how to install

2. If the program is updated, how to synchronize

In a Java environment, these two issues can be solved by Java Web Start technology.

Place a startup program on the page (in accordance with JNLP protocol) start up.

JNLP is as follows:

file viewer </ title></p> <p><vendor> IBM DeveloperWorks </ vendor></p> <p><Homepage Href = "INDEX.HTML" /></p> <p><Description> File Viewer </ Description></p> <p><Description Kind = "Short"> File Viewer </ Description></p> <p></ information></p> <p><security></p> <p><all-permissions /></p> <p></ security></p> <p><resources></p> <p><j2se version = "1.5" /></p> <p><jar href = "fileviewer.jar" /></p> <p><nativelib href = "swt-lib.jar" /></p> <p></ resources></p> <p><resources os = "windows"></p> <p><jar href = "swt.jar" /></p> <p></ resources></p> <p><Application-Desc Main-Class = "Org.eclipse.swt.examples.fileViewer.FileViewer" /></p> <p></ jnlp> About how to start SWT using Java Web Start, you can check the related articles on IBM-900.</p> <p>Summary</p> <p>These two uploading methods have a disadvantage. It is worth mentioning that the latter, using Java Web Start technology to realize the local launch of the program, especially for SWT applications, more than applets.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-77556.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="77556" 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.048</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 = 'f0XG8iBbJF0CSkBujT_2BOyU8gj65vgxVxO0kMeVoQ4YBEGfKT_2Bbv4azze65JK119Qlx4HKFN44SFjp9Y7'; 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>