📄 smartupload.java
字号:
value = dataHeader.substring(start, end); } return value; } private String getFileExt(String fileName) { String value = new String(); int start = 0; int end = 0; if(fileName == null) return null; start = fileName.lastIndexOf('.') + 1; end = fileName.length(); value = fileName.substring(start, end); if(fileName.lastIndexOf('.') > 0) return value; else return ""; } private String getContentType(String dataHeader) { String token = new String(); String value = new String(); int start = 0; int end = 0; token = "Content-Type:"; start = dataHeader.indexOf(token) + token.length(); if(start != -1) { end = dataHeader.length(); value = dataHeader.substring(start, end); } return value; } private String getTypeMIME(String ContentType) { String value = new String(); int pos = 0; pos = ContentType.indexOf("/"); if(pos != -1) return ContentType.substring(1, pos); else return ContentType; } private String getSubTypeMIME(String ContentType) { String value = new String(); int start = 0; int end = 0; start = ContentType.indexOf("/") + 1; if(start != -1) { end = ContentType.length(); return ContentType.substring(start, end); } else { return ContentType; } } private String getContentDisp(String dataHeader) { String value = new String(); int start = 0; int end = 0; start = dataHeader.indexOf(":") + 1; end = dataHeader.indexOf(";"); value = dataHeader.substring(start, end); return value; } private void getDataSection() { boolean found = false; String dataHeader = new String(); int searchPos = m_currentIndex; int keyPos = 0; int boundaryLen = m_boundary.length(); m_startData = m_currentIndex; m_endData = 0; do { if(searchPos >= m_totalBytes) break; if(m_binArray[searchPos] == (byte)m_boundary.charAt(keyPos)) { if(keyPos == boundaryLen - 1) { m_endData = ((searchPos - boundaryLen) + 1) - 3; break; } searchPos++; keyPos++; } else { searchPos++; keyPos = 0; } } while(true); m_currentIndex = m_endData + boundaryLen + 3; } private String getDataHeader() { int start = m_currentIndex; int end = 0; int len = 0; boolean found = false; while(!found) if(m_binArray[m_currentIndex] == 13 && m_binArray[m_currentIndex + 2] == 13) { found = true; end = m_currentIndex - 1; m_currentIndex = m_currentIndex + 2; } else { m_currentIndex++; } String dataHeader = new String(m_binArray, start, (end - start) + 1); return dataHeader; } private String getFileName(String filePathName) { String token = new String(); String value = new String(); int pos = 0; int i = 0; int start = 0; int end = 0; pos = filePathName.lastIndexOf('/'); if(pos != -1) return filePathName.substring(pos + 1, filePathName.length()); pos = filePathName.lastIndexOf('\\'); if(pos != -1) return filePathName.substring(pos + 1, filePathName.length()); else return filePathName; } public void setDeniedFilesList(String deniedFilesList) throws SQLException, IOException, ServletException { String ext = ""; if(deniedFilesList != null) { ext = ""; for(int i = 0; i < deniedFilesList.length(); i++) if(deniedFilesList.charAt(i) == ',') { if(!m_deniedFilesList.contains(ext)) m_deniedFilesList.addElement(ext); ext = ""; } else { ext = ext + deniedFilesList.charAt(i); } if(ext != "") m_deniedFilesList.addElement(ext); } else { m_deniedFilesList = null; } } public void setAllowedFilesList(String allowedFilesList) { String ext = ""; if(allowedFilesList != null) { ext = ""; for(int i = 0; i < allowedFilesList.length(); i++) if(allowedFilesList.charAt(i) == ',') { if(!m_allowedFilesList.contains(ext)) m_allowedFilesList.addElement(ext); ext = ""; } else { ext = ext + allowedFilesList.charAt(i); } if(ext != "") m_allowedFilesList.addElement(ext); } else { m_allowedFilesList = null; } } public void setDenyPhysicalPath(boolean deny) { m_denyPhysicalPath = deny; } public void setForcePhysicalPath(boolean force) { m_forcePhysicalPath = force; } public void setContentDisposition(String contentDisposition) { m_contentDisposition = contentDisposition; } public void setTotalMaxFileSize(long totalMaxFileSize) { m_totalMaxFileSize = totalMaxFileSize; } public void setMaxFileSize(long maxFileSize) { m_maxFileSize = maxFileSize; } protected String getPhysicalPath(String filePathName, int option) throws IOException { String path = new String(); String fileName = new String(); String fileSeparator = new String(); boolean isPhysical = false; fileSeparator = System.getProperty("file.separator"); if(filePathName == null) throw new IllegalArgumentException("There is no specified destination file (1140)."); if(filePathName.equals("")) throw new IllegalArgumentException("There is no specified destination file (1140)."); if(filePathName.lastIndexOf("\\") >= 0) { path = filePathName.substring(0, filePathName.lastIndexOf("\\")); fileName = filePathName.substring(filePathName.lastIndexOf("\\") + 1); } if(filePathName.lastIndexOf("/") >= 0) { path = filePathName.substring(0, filePathName.lastIndexOf("/")); fileName = filePathName.substring(filePathName.lastIndexOf("/") + 1); } path = path.length() != 0 ? path : "/"; java.io.File physicalPath = new java.io.File(path); if(physicalPath.exists()) isPhysical = true; if(option == 0) { if(isVirtual(path)) { path = m_application.getRealPath(path); if(path.endsWith(fileSeparator)) path = path + fileName; else path = String.valueOf((new StringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName)); return path; } if(isPhysical) { if(m_denyPhysicalPath) throw new IllegalArgumentException("Physical path is denied (1125)."); else return filePathName; } else { throw new IllegalArgumentException("This path does not exist (1135)."); } } if(option == 1) { if(isVirtual(path)) { path = m_application.getRealPath(path); if(path.endsWith(fileSeparator)) path = path + fileName; else path = String.valueOf((new StringBuffer(String.valueOf(path))).append(fileSeparator).append(fileName)); return path; } if(isPhysical) throw new IllegalArgumentException("The path is not a virtual path."); else throw new IllegalArgumentException("This path does not exist (1135)."); } if(option == 2) { if(isPhysical) if(m_denyPhysicalPath) throw new IllegalArgumentException("Physical path is denied (1125)."); else return filePathName; if(isVirtual(path)) throw new IllegalArgumentException("The path is not a physical path."); else throw new IllegalArgumentException("This path does not exist (1135)."); } else { return null; } } public void uploadInFile(String destFilePathName) throws SmartUploadException, IOException { int intsize = 0; int pos = 0; int readBytes = 0; if(destFilePathName == null) throw new IllegalArgumentException("There is no specified destination file (1025)."); if(destFilePathName.length() == 0) throw new IllegalArgumentException("There is no specified destination file (1025)."); if(!isVirtual(destFilePathName) && m_denyPhysicalPath) throw new SecurityException("Physical path is denied (1035)."); intsize = m_request.getContentLength(); m_binArray = new byte[intsize]; for(; pos < intsize; pos += readBytes) try { readBytes = m_request.getInputStream().read(m_binArray, pos, intsize - pos); } catch(Exception e) { throw new SmartUploadException("Unable to upload."); } if(isVirtual(destFilePathName)) destFilePathName = m_application.getRealPath(destFilePathName); try { java.io.File file = new java.io.File(destFilePathName); FileOutputStream fileOut = new FileOutputStream(file); fileOut.write(m_binArray); fileOut.close(); } catch(Exception e) { throw new SmartUploadException("The Form cannot be saved in the specified file (1030)."); } } private boolean isVirtual(String pathName) { if(m_application.getRealPath(pathName) != null) { java.io.File virtualFile = new java.io.File(m_application.getRealPath(pathName)); return virtualFile.exists(); } else { return false; } } protected byte m_binArray[]; protected HttpServletRequest m_request; protected HttpServletResponse m_response; protected ServletContext m_application; private int m_totalBytes; private int m_currentIndex; private int m_startData; private int m_endData; private String m_boundary; private long m_totalMaxFileSize; private long m_maxFileSize; private Vector m_deniedFilesList; private Vector m_allowedFilesList; private boolean m_denyPhysicalPath; private boolean m_forcePhysicalPath; private String m_contentDisposition; public static final int SAVE_AUTO = 0; public static final int SAVE_VIRTUAL = 1; public static final int SAVE_PHYSICAL = 2; private Files m_files; private Request m_formRequest;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -