?? smartupload.java
字號:
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 + -