JSPSMARTupload upload download full Raiders

xiaoxiao2021-03-06  109

1. Installing JSPSMARTupload is a free-use full-featured file that is developed by www.jspsmart.com, which is adapted to embed the JSP file that performs upload download operations. This component has the following features: 1, easy to use. Only writing three five lines of Java code in the JSP file, you can get upload or download it, it is convenient. 2, can control upload. With the objects provided by the JSPSmartupLoad component, you can get information on all uploaded files (including file name, size, type, extension, file data, etc.) for easy access. 3, can limit the uploaded documents in size, type and other aspects. This can be filtered off the files that do not meet the requirements. 4, flexible download. Only write two lines of code, you can turn the web server into a file server. No matter whether the file is in the directory of the web server or in any other directory, JSPSMARTupLoad can be downloaded. 5. Upload the file to the database, you can also download the data in the database. This function is for the mysql database because it is not versatile, so this article is not prepared to introduce this usage. The JSPSmartupLoad component can freely download from www.jspsmart.com, the name of the compressed package is jspsmartupload.zip. After downloading, use Winzip or WinRAR to extract it to Tomcat's WebApps directory (this article is described as an example of Tomcat Server). After decompression, change the subdirectory Web-INF in the WebApps / Jspsmartupload directory to all-in-case WEB-INF, so you can change the JSPSMARTupLoad class. Because Tomcat is sensitive to file name sensitive, it requires web applications related to the directory to Web-INF, and must be uppercase. Then restart Tomcat so that you can use the JSPSmartupload component in the JSP file. Note that after the above method is installed, only the program in the WebApps / JSPSMARTupload directory can use the JSPSMARTUPLOAD component, if you want the Tomcat server to use it, you must do the following work: 1. Enter the command line status, switch the directory to the Tomcat's WebApps / JSPSMARTUPLOAD / Web-INF directory. 2. Run JAR packaging command: JAR CVF JSPSMARTUPLOAD.JAR COM (You can also open the Explorer, switch to the current directory, compress all the files in the COM directory into jspsmartupload.zip with Winzip, then rename JSPSMARTUPLOAD.JAR Document can be. 3. Copy JSPSmartupload.jar to Tomcat's Shared / Lib Directory. Second, Related Class Descriptions (1) File class packages all information for uploading files. Through it, you can get the file name, file size, extension, file data, etc. of the upload file. The FILE class mainly provides the following methods: 1. SaveAs effect: Save the file.

Prototype: public void saveAs (java.lang.String destFilePathName) or public void saveAs (java.lang.String destFilePathName, int optionSaveAs) which, destFilePathName is saved in the file name, optionSaveAs is the Save option, this option has three values, respectively Is Saveas_Physical, SaveAs_Virtual, Saveas_Auto. SaveAs_physical indicates that the root directory of the operating system is saved as the file root directory, and saveas_virtual indicates that the root directory is saved by the root directory of the web application, and SaveAs_Auto means that the component is determined, and when the root directory of the web application exists When it chooses SaveAs_virtual, otherwise SaveAs_physical will be selected. For example, if the SaveAs ("/ UPLOAD / SAMPLE.ZIP", SaveAs_Physical) If the web server is installed in the C drive, the saved file name is actually C: /upload/sample.zip. And SaveAs ("/ upload / sample.zip", saveas_virtual) If the root directory of the web application is WebApps / JSPSmartupload, the saved file name is actually WebApps / JSPSmartupload / Upload / Sample.zip. SaveAs ("/ UPLOAD / SAMPLE.ZIP", SAVEAS_AUTO) If there is an UPLOAD directory in the web application root directory, its effect is the same as saveas ("/ upload / sample.zip", saveas_virtual), otherwise Saves ("/ UPLOAD / SAMPLE.ZIP ", SaveAs_physical). Recommendation: For the development of web programs, it is best to use SaveAs_virtual to transplant. 2, ismissing effect: This method is used to determine if the user selects the file, that is, the corresponding form item is worthless. When the file is selected, it returns false. When the file is not selected, it returns True. Prototype: public boolean ismissing () 3, getfieldname effect: Take the name of the form item corresponding to this uploaded file in the HTML form. Prototype: public string getfieldname () 4, getFileName effect: Take a file name (excluding directory information) prototype: public string getFileName () 5, getFilepathname effect: Take a full name (with directory) prototype: public string getFilePathname 6, getFileExt : Take a file extension (suffix) prototype: public string getfileext () 7, getSize effect: Take a file length (in bytes) prototype: public int gettsize () 8, getBinaryData effect: Take one of the file data indicated in the file data Bytes, used to detect files, etc. Prototype: Public Byte GetBinaryData (int index). Among them, Index represents the displacement, its value is between 0 and GetSize () - 1.

(Ii) Files class This class represents the collection of all uploaded files, which can get the number, size and other information of the upload file. There are the following methods: 1. GetCount role: Number of uploaded documents. Prototype: Public int getCount () 2, getFile effect: obtain the file object file in the specified displacement (this is com.jspsmart.upload.file, not java.io.file, pay attention to distinguish). Prototype: Public File GetFile (int index). Where index is a pointing, its value is between 0 and GetCount () - 1. 3, GetSize effect: Take the total length of the upload file, which can be used to limit the amount of data amounts uploaded. Prototype: Public long getSize () 4, getCollection effect: Return all uploaded file objects in the form of Collection so that other application references, browse upload file information. Prototype: Public Collection getCollection () 5, GetEnumeration effect: Return all upload file objects in ENUMERATION (enumeration) so that other applications browse uploaded file information. Prototype: Public Enumeration GetENUMERATION () ㈢ Request class This class is equivalent to the built-in object Request with the JSP. Only, this class is provided because the value of the form item cannot be obtained through the Request object for the file upload form. It must be obtained by the Request object provided by the JSPSmartupLoad component. This class provides the following methods: 1. GetParameter effect: Get the value of the specified parameter. When the parameter does not exist, the return value is NULL. Prototype: Public String getParameter (String name). Where Name is the name of the parameter. 2, GetParameterValues ​​effect: When a parameter can have multiple values, use this method to take the value. It returns a string array. When the parameter does not exist, the return value is NULL. Prototype: public string [] getParameterValues. Where Name is the name of the parameter. 3. GetParameterNames effect: obtain the name of all parameters in the Request object, used to traverse all parameters. It returns an enumerated object. Prototype: public enumeration getParameterNames () ㈣ Smartupload class This class completes upload download work. A. Method for uploading and downloading shared: there is only one: Initialize. Role: Execute the initialization work of upload download, must be the first execution. Prototype: There are multiple, mainly using this: public final void initialize (javax.servlet.jsp.pagecontext pagecontext) where PageContext is a JSP page built-in object (page context). B. Method for Uploading files: 1, Upload effect: Upload file data. For upload operations, the first step is executed, and the second step is to perform this method.

Prototype: Public Void Upload () 2, SAVE Role: Save all upload files to the specified directory and return the number of files saved. Prototype: Public int SAVE (String destPathname) and public int save (string destpathname, int option) where destPathname is a file saved directory, Option is saved, which has three values, Save_Physical, Save_Virtual and Save_Auto. (Similar to the value of the SaveAs method of the FILE class) Save_physical indicates that the component saves the file to the directory of the operating system root to the root directory, save_virtual indicates that the file saves the file to the web application root directory as the file root directory. In the directory, Save_AUTO indicates automatic selection by the component. Note: The effect of Save is equivalent to Save (Destpathname, Save_AUTO). 3, GetSize effect: Take the total length prototype of the upload file data: public int getSize () 4, getFiles effect: Take all uploaded files, return to the Files object, you can use the Files class to get the number of uploaded files, etc. . Prototype: Public Files getFiles () 5, getRequest effect: obtain the Request object so that this object obtains the value of the upload form single parameter. Prototype: Public Request getRequest () 6, SetallowedFileSlist effect: Settings Allow upload with files with specified extensions, the components will throw an exception when there is a file name in the upload. Prototype: Public Void SetAllowedFileSlist (String ALLOWEDFILSL) where allowedFileSlist is a comma-separated list of file extensions to allow uploaded file extensions. If you want to allow files that do not have extensions, you can use two comma. For example: SETALLOWEDFILSLIST ("DOC, TXT,") will allow files with DOC and TXT extensions and files without extensions. 7, SetDeniedFileSlist effect: Used to address those files with specified extensions. If there is a file extension being restricted, the upload component will throw an exception. Prototype: Public void setdeniedFilesList (String DeniedFilesList) where DeniedFileSlist is disabled from the uploaded file extension list, each extension is separated by commas. If you want to prohibit uploading files that do not have extensions, you can use two commas to represent. For example: SetDeniedFileSlist ("EXE, BAT,") will disable files with EXE and BAT extensions and files without extensions. 8, SetMaxFileSize effect: Set the maximum length of each file to be uploaded. Prototype: Public Void SetMaxFileSize (long maxfilesize) where the maxFileSize allows uploading the maximum length for each file. When the file exceeds this length, it will not be uploaded. 9, SetTotalMaxFileSize effect: Set the total length of the file that allows uploaded files to limit the amount of data of a disposable upload.

Prototype: Public void setTotalmaxFileSize (long TotalmaxFileSize) where TotalMaxFileSize is the total length of the file that allows uploaded files. C. Download files commonly used method 1, setContentDisPosition effect: Add data to the Content-Disposition Domain of the MIME file header. The JSPSMARTupLoad component automatically fills in the Content-Disposition Domain of the MIME File Header when the download is returned. If the user needs to add additional information, use this method. Prototype: Public void setContentDisPosition (String ContentDisPosition) where contentdisposition is the data to be added. If contentdisposition is null, the component will automatically add "attachment;" to indicate that the downloaded file as an attachment, the result is that the IE browser will prompt the file instead of automatically opening this file (IE browser usually according to the downloaded file The extension decides what operations are executed, the extension is that the DOC will open with the Word program, and the extension will open with the Acrobat program, and so on). 2, Downloadfile: Download file. Prototype: A total of three prototypes available, the first most common, the latter two file downloads for special circumstances (such as changing the content type, change the saved file name). ① public void downloadFile (String sourceFilePathName) which, sourceFilePathName want to download the file name (a file with a directory full name) ② public void downloadFile (String sourceFilePathName, String contentType) which, sourceFilePathName want to download the file name (with a directory of files Full name), ContentType is the content type (file type information in MIME format, can be identified by browser). 3 Public Void Downloadfile (String SourceFilepathname, String ContentType, String DestfileName) where SourceFilePathname is the file name (with directory file full name), contentType is the content type (file type information in MIME format, can be identified by browser) DestfileName is the default saved file name for download. Third, the file upload (1) Form form for uploading files, two requirements: 1. Method Apply POST, Method = "POST". 2. Increase the attribute: encType = "multipart / form-data" Below is an example of a FORM form for uploading files: (ii) Uploaded example 1, upload page Upload.html This page provides a form, let users choose the file to upload , Click the "Upload" button to perform the upload operation. The page source code is as follows:

File Upload

Upload file selection

2, upload processing page do_upload.jsp This page performs file upload operations. The usage of the upload method is described in detail in the page source code, and details will not be described here. The page source code is as follows: <% - File name: Do_upload.jsp works? Vendor: Zhsoft88@sohu.com) -%> <% @ Page ContentType = "text / html; charset = GB2312 "Language =" Java "Import =" java.util. *, com.jspsmart.upload. * "ErrorPage =" "%> file upload processing page <% // New a smartupload SU = New Smartupload (); / / Upload initialization Su.initialize (pageContext); // Set up the upload limit // 1. Limit the maximum length of each upload file. // Su.setMaxFileSize (10000); // 2. Restrict the length of the total upload data. // Su.SettotalMaxFileSize (20000); // 3. Set the file that allows upload (by extension restrictions), only the DOC, TXT file is allowed. // Su.setAllowedFileSlist ("DOC, TXT"); // 4. Set the file that prohibits uploading (by extension restrictions), prohibiting uploading files with EXE, BAT, JSP, HTM, HTML extensions and no expansion Name file. // Su.SetdeniedFileSlist ("EXE, BAT, JSP, HTM, HTML,"); // Upload file Su.upload (); // Save all of the upload files to the specified directory int count = Su.Save ("/ UPLOAD "); Out.println (Count " file upload success! "); // Using the Request object to obtain parameters value Out.println (" test = " su.getRequest (). getParameter (" test ") " "); // extract the upload file information one by one, and save the file at the same time. For (int i = 0; i

{

com.jspsmart.upload.file file = su.getfiles (). getFile (i);

// Continue if there is no existence

File.isming ()) Continue;

// Display current file information

Out.println ("

"); Out.println ("

FieldName " file.getfieldname () " "); Out.println ("

File length (size) file.getsize () ""); Out.println ("

Filename " file.getFileName () " "); Out.println ("

Fileext " file.getfileext () " "); Out.println ("

Filepathname " file.getfilepathname () " "); out.println (" ");

// Save the file

// file.saveas ("/ upload /" myfile.getfilename ());

// Save to the directory of the root directory as the root of the web application

// file.saveas ("/ upload /" myfile.getFileName (),

Su.save_virtual);

/ / Save to the root directory of the operating system to the file root directory

// file.saveas ("c: / temp /" myfile.getfilename (),

Su.save_physical;

}

%>

Fourth, file download

1, download link page down, Download.html

The page source code is as follows:

download

click to download

2, download processing page do_download.jsp do_download.jsp shows how to download files with JSPSMARTupload components, you can see from the source code below, and how simple downloads.

The source code is as follows:

<% @ Page ContentType = "text / html; charset = GB2312"

IMPORT = "com.jspsmart.upload. *"%> <%

// Newly build a smartupload object

Smartupload su = new smartupload ();

// Initialization

Su.initialize (PageContext);

// Set contentdisposition to NULL to prohibit the browser automatically open the file,

/ / Ensure that the click link is the download file. If it is not set, the downloaded file extension is called

// DOC, the browser will automatically open it with Word. When the extension is PDF,

// The browser will open with Acrobat.

Su.setContentDisPosition (NULL);

// download file

Su.Downloadfile ("/ UPLOAD / How to earn my first bucket of gold.doc");

%>

Note that the downloaded page is executed, outside the Java script range (ie <% ...%>), do not include characters such as HTML code, space, carriage return, and wrap, and some words will not be downloaded correctly. If you don't believe it, you can add a newline character in the above source code, and then download it, and ensure an error. Because it affects the data stream returned to the browser, it causes the parsing error.

3, how to download Chinese files

JSPSMARTupload can download files, but it is insufficient to support Chinese. If there is Chinese characters in the downloaded file name, the browser shows a bunch of garbled when prompted the file name, which is very sweeping. The above example is this. (This problem is also the problem exists in many download components, very few people solve, no relevant information, sigh!)

In order to add support for the JSPSmartupLoad component, I studied the component and found that the browser can display the Chinese name correctly after the UTF-8 encoding returns the safer file name of the browser. This is a delighted discovery. So I made an upgrade process for the Smartupload class of the JSPSmartupLoad component, adding the TOUTF8STRING method, the change part source code is as follows:

Public Void Downloadfile (String S, String S1, String S2, INT I) Throws ServleTexception, IOException, SmartUploadException

??? {

IF (s == NULL)

??? throw new illegalargumentexception ("file ' s

??? "'NOT FOUND (1040).");

IF (S.Equals ("))

??? throw new illegalargumentexception ("file ' s

??? "'NOT FOUND (1040).");

IF (! isvirtual (s) && m_denyphysicalpath)

??? throw new securityException ("Physical Path IS

??? DENIED (1035). ");

IF (isvirtual (s))

??? s = m_application.getRealPath (s);

Java.io.file file = new java.io.file (s);

FileInputStream FileInputStream = New FileInputStream (file);

Long L = file.length ();

Boolean flag = false;

INT K = 0;

Byte abyte0 [] = new byte [i];

IF (S1 == Null)

??? m_response.setContentType ("Application / X-msdownLoad");

Else

IF (s1.length () == 0)

??? m_response.setContentType ("Application / X-msdownLoad");

Else

??? M_Response.setContentType (S1);

m_response.setContentLength (INT) L);

m_contentdisposition = m_contentdisposition! = NULL?

M_ContentDisposition: "attachment;";

IF (S2 == NULL)

?? m_response.setheader ("Content-Disposition",

??? M_ContentDisPosition "filename ="

??? Toutf8String (getFileName (s)));

Else

IF (s2.length () == 0)

?? m_response.setheader ("Content-Disposition",

??? M_ContentDisPosition;

Else

?? m_response.setheader ("Content-Disposition",

??? m_contentdisposition "filename =" Toutf8String (S2));

While ((long) K

{

??? Int j = fileinputstream.read (Abyte0, 0, i);

??? k = j;

??? M_Response.getOutputStream (). Write (Abyte0, 0, J);}

FileInputStream.Close ();

???}

??? **

???? * convert the Chinese characters in the file name into the UTF8 encoded string to download the saved file name correctly.

???? * Crossing Software Production Center rain also 2003.08.01

???? * @Param s original file name

???? * @return re-encoding file name

???? * /

??? public static string Toutf8String (String s) {

StringBuffer SB = new stringbuffer ();

For (int i = 0; i

??? char c = s.charat (i);

??? IF (c> = 0 && c <= 255) {

Sb.append (c);

???} else {

Byte [] B;

Try {

??? b = character.toString (c) .getbytes ("UTF-8");

} catch (exception ex) {

??? system.out.println (ex);

??? b = new byte [0];

}

For (int J = 0; j

??? INT K = B [J];

??? IF (k <0) k = 256;

??? sb.append ("%" integer.tohexstring (k).

??? Touppercase ());

}

???}

}

Return sb.toString ();

???}

Note that the bold part in the source code, the original JSPSMARTUPLOAD component does not work for the returned file, and now makes the encoded conversion work, convert the file name to the UTF-8 form of encoding form. UTF-8 encoding does not make any processing in English, and it needs to be converted to% XX in English. In the TOTF8String method, the UTF-8 encoding of the Chinese character character is obtained directly by the encoding conversion method provided by the Java language, and then converted to% XX.

After compiling the source code to jspsmartupload.jar, copy to Tomcat's Shared / Lib Directory (can be shared by all web applications), then restart the Tomcat server, you can download files containing Chinese names. In addition, Toutf8String methods can also be used to convert hyperlinks containing Chinese to ensure the valid link of the link, because some web servers do not support Chinese links.

Summary: JSPSMARTupload component is the Upload Download Components that use JSP for the B / S program development process, which is simple and convenient to use. Now I have the support of the document that downloads Chinese names. It is like a tiger to add more popularity.

Transfer from: Dynamic Network Production Guide www.knowsky.com

转载请注明原文地址:https://www.9cbs.com/read-125318.html

New Post(0)