multipartrequest.java
来自「很好的文件处理程序」· Java 代码 · 共 490 行 · 第 1/2 页
JAVA
490 行
while ((part = parser.readNextPart()) != null) { String name = part.getName(); if (part.isParam()) { // It's a parameter part, add it to the vector of values ParamPart paramPart = (ParamPart) part; String value = paramPart.getStringValue(); Vector existingValues = (Vector)parameters.get(name); if (existingValues == null) { existingValues = new Vector(); parameters.put(name, existingValues); } existingValues.addElement(value); } else if (part.isFile()) { // It's a file part FilePart filePart = (FilePart) part; String fileName = filePart.getFileName(); if (fileName != null) { filePart.setRenamePolicy(policy); // null policy is OK // The part actually contained a file filePart.writeTo(dir); files.put(name, new UploadedFile(dir.toString(), filePart.getFileName(), fileName, filePart.getContentType())); } else { // The field did not contain a file files.put(name, new UploadedFile(null, null, null, null)); } } } } /** * Constructor with an old signature, kept for backward compatibility. * Without this constructor, a servlet compiled against a previous version * of this class (pre 1.4) would have to be recompiled to link with this * version. This constructor supports the linking via the old signature. * Callers must simply be careful to pass in an HttpServletRequest. * */ public MultipartRequest(ServletRequest request, String saveDirectory) throws IOException { this((HttpServletRequest)request, saveDirectory); } /** * Constructor with an old signature, kept for backward compatibility. * Without this constructor, a servlet compiled against a previous version * of this class (pre 1.4) would have to be recompiled to link with this * version. This constructor supports the linking via the old signature. * Callers must simply be careful to pass in an HttpServletRequest. * */ public MultipartRequest(ServletRequest request, String saveDirectory, int maxPostSize) throws IOException { this((HttpServletRequest)request, saveDirectory, maxPostSize); } /** * Returns the names of all the parameters as an Enumeration of * Strings. It returns an empty Enumeration if there are no parameters. * * @return the names of all the parameters as an Enumeration of Strings. */ public Enumeration getParameterNames() { return parameters.keys(); } /** * Returns the names of all the uploaded files as an Enumeration of * Strings. It returns an empty Enumeration if there are no uploaded * files. Each file name is the name specified by the form, not by * the user. * * @return the names of all the uploaded files as an Enumeration of Strings. */ public Enumeration getFileNames() { return files.keys(); } /** * Returns the value of the named parameter as a String, or null if * the parameter was not sent or was sent without a value. The value * is guaranteed to be in its normal, decoded form. If the parameter * has multiple values, only the last one is returned (for backward * compatibility). For parameters with multiple values, it's possible * the last "value" may be null. * * @param name the parameter name. * @return the parameter value. */ public String getParameter(String name) { try { Vector values = (Vector)parameters.get(name); if (values == null || values.size() == 0) { return null; } String value = (String)values.elementAt(values.size() - 1); return value; } catch (Exception e) { return null; } } /** * Returns the values of the named parameter as a String array, or null if * the parameter was not sent. The array has one entry for each parameter * field sent. If any field was sent without a value that entry is stored * in the array as a null. The values are guaranteed to be in their * normal, decoded form. A single value is returned as a one-element array. * * @param name the parameter name. * @return the parameter values. */ public String[] getParameterValues(String name) { try { Vector values = (Vector)parameters.get(name); if (values == null || values.size() == 0) { return null; } String[] valuesArray = new String[values.size()]; values.copyInto(valuesArray); return valuesArray; } catch (Exception e) { return null; } } /** * Returns the filesystem name of the specified file, or null if the * file was not included in the upload. A filesystem name is the name * specified by the user. It is also the name under which the file is * actually saved. * * @param name the file name. * @return the filesystem name of the file. */ public String getFilesystemName(String name) { try { UploadedFile file = (UploadedFile)files.get(name); return file.getFilesystemName(); // may be null } catch (Exception e) { return null; } } /** * Returns the original filesystem name of the specified file (before any * renaming policy was applied), or null if the file was not included in * the upload. A filesystem name is the name specified by the user. * * @param name the file name. * @return the original file name of the file. */ public String getOriginalFileName(String name) { try { UploadedFile file = (UploadedFile)files.get(name); return file.getOriginalFileName(); // may be null } catch (Exception e) { return null; } } /** * Returns the content type of the specified file (as supplied by the * client browser), or null if the file was not included in the upload. * * @param name the file name. * @return the content type of the file. */ public String getContentType(String name) { try { UploadedFile file = (UploadedFile)files.get(name); return file.getContentType(); // may be null } catch (Exception e) { return null; } } /** * Returns a File object for the specified file saved on the server's * filesystem, or null if the file was not included in the upload. * * @param name the file name. * @return a File object for the named file. */ public File getFile(String name) { try { UploadedFile file = (UploadedFile)files.get(name); return file.getFile(); // may be null } catch (Exception e) { return null; } }}// A class to hold information about an uploaded file.//class UploadedFile { private String dir; private String filename; private String original; private String type; UploadedFile(String dir, String filename, String original, String type) { this.dir = dir; this.filename = filename; this.original = original; this.type = type; } public String getContentType() { return type; } public String getFilesystemName() { return filename; } public String getOriginalFileName() { return original; } public File getFile() { if (dir == null || filename == null) { return null; } else { return new File(dir + File.separator + filename); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?