⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smartupload.java

📁 一个图片管理程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            start = i;
            token = "\"";
            end = dataHeader.indexOf(token, i);

            if((start > 0) && (end > 0)) {
                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(46) + 1;
        end = fileName.length();
        value = fileName.substring(start, end);

        if(fileName.lastIndexOf(46) > 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(47);

        if(pos != -1) {
            return filePathName.substring(pos + 1, filePathName.length());
        }

        pos = filePathName.lastIndexOf(92);

        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 : "/";

        //TODO
        // edit by zyg
        java.io.File physicalPath = new java.io.File(path);

        // end edit
        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 {
            //TODO
            // edit by zyg
            java.io.File file = new java.io.File(destFilePathName);

            // end edit
            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) {
            //TODO
            // edit by zyg
            java.io.File virtualFile = new java.io.File(m_application.getRealPath(pathName));

            // end edit
            return virtualFile.exists();
        } else {
            return false;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -