老系统对接

This commit is contained in:
2018-07-12 14:08:55 +08:00
commit 5f41fe5df1
420 changed files with 50883 additions and 0 deletions

View File

@ -0,0 +1,453 @@
package com.sino.publicclass.common;
import java.io.*;
import java.util.Enumeration;
import java.util.Vector;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
public class HttpDataParser {
private static final String READLINE_IOEXCEPTION =
"Fail to read data sent by the browser.";
private static final String CORRUPTED_INPUT_STREAM =
"Data stream is corrupted.";
private static final String FILE_OUTPUT_STREAM_IOEXCEPTION =
"Fail to create the attachment file.";
private static final String CLOSE_IOEXCEPTION =
"Fail to close the attachment file.";
private static final String WRITE_IOEXCEPTION =
"Fail to read the attachment file.";
private static final String WORKING_DIR_IS_FILE =
"The working directory is a file.";
private static final String WORKING_DIR_CREATE_ERROR =
"Cannot create the file working directory.";
private static final String FILE_SIZE_ERROR =
"<EFBFBD>ϴ<EFBFBD><EFBFBD>ļ<EFBFBD>̫<EFBFBD><EFBFBD>.";
private static final String MULTIDATATYPE = "multipart/form-data";
private static final int BUF_SIZE = 0x64000;
private static final String NAME_STRING =
"Content-Disposition: form-data; name=\"";
private static final String FILENAME_STRING = "\"; filename=\"";
private static final String CONTENT_TYPE_STRING = "Content-Type:";
protected Vector parameterNames;
protected Vector parameterValues;
protected Vector uploadParameterNames;
protected Vector uploadSrcFileNames;
protected Vector uploadFileNames;
protected Vector uploadFileTypes;
protected Vector uploadFileSizes;
private int maxFileSize = 1024 * 1024 * 10;
public HttpDataParser() {
}
public HttpDataParser(int maxSize) {
setMaxFileSize(maxSize);
}
public void parser(HttpServletRequest httpservletrequest, String path, int maxSize)
throws Exception {
setMaxFileSize(maxSize);
parser(httpservletrequest, path);
}
public void parser(HttpServletRequest httpservletrequest, String path)
throws Exception {
parameterNames = new Vector(0);
parameterValues = new Vector(0);
uploadParameterNames = new Vector(0);
uploadSrcFileNames = new Vector(0);
uploadFileNames = new Vector(0);
uploadFileTypes = new Vector(0);
uploadFileSizes = new Vector(0);
byte abyte0[] = new byte[BUF_SIZE];
String parameterName = "";
String s12 = "";
Integer integer = null;
int len = 0; //<2F><><EFBFBD><EFBFBD>
int cursor = 0; //<2F>α<EFBFBD>
String contentType = httpservletrequest.getContentType();
if (contentType != null) {
contentType = contentType.trim();
}
//ENCTYPE<50><45><EFBFBD><EFBFBD>multipart/form-data<74><61>
if (contentType == null || contentType.indexOf(MULTIDATATYPE) < 0) {
String parValue;
for (Enumeration enumeration = httpservletrequest.getParameterNames(); enumeration.hasMoreElements();
parameterValues.addElement(parValue)) {
parameterName = (String) enumeration.nextElement();
parameterNames.addElement(parameterName);
parValue = getParameter(httpservletrequest, parameterName);
}
return;
}
ServletInputStream servletinputstream = httpservletrequest.getInputStream();
int contentLength = httpservletrequest.getContentLength();
try {
len = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += len;
String s1 = new String(abyte0, 0, len);
String code = s1.substring(0, s1.length() - 2);
int i2 = 0;
while (contentLength > cursor) {
int k;
try {
k = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += k;
String s2 = null;
s2 = new String(abyte0, 0, k);
boolean isFile = false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>file
if (k > NAME_STRING.length()) {
if (s2.substring(0, NAME_STRING.length()).equals(NAME_STRING)) {
int l1 = s2.indexOf("\"", NAME_STRING.length());
parameterName = s2.substring(NAME_STRING.length(), l1);
l1 = s2.indexOf(FILENAME_STRING, l1);
if (l1 >= 0) {
isFile = true;
s12 = s2.substring(l1 + FILENAME_STRING.length(), s2.indexOf("\"",
l1 + FILENAME_STRING.length())).
trim();
} else {
isFile = false;
}
} else {
throw new Exception(CORRUPTED_INPUT_STREAM);
}
}
try {
k = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += k;
if (isFile) {
// is file
String s14;
String filetype;
String s20 = "";
if (s12 == null || s12.equals("")) {
filetype = "";
integer = new Integer(0);
s14 = "";
boolean flag1 = true;
do {
try {
k = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += k;
String s3 = new String(abyte0, 0, k);
if (s3.length() >= code.length() &&
s3.substring(0, code.length()).equals(code)) {
flag1 = false;
}
}
while (flag1);
} else {
String s4 = new String(abyte0, 0, k);
//read filetype
if (k > CONTENT_TYPE_STRING.length()) {
if (s4.substring(0,
CONTENT_TYPE_STRING.length()).equals(CONTENT_TYPE_STRING)) {
filetype = s4.substring(CONTENT_TYPE_STRING.length(), s4.length()).trim();
} else {
filetype = "";
}
} else {
filetype = "";
}
try {
k = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += k;
File file = new File(path);
if (file.isFile()) {
throw new Exception(WORKING_DIR_IS_FILE);
}
if (!file.exists() && !file.mkdirs()) {
throw new Exception(WORKING_DIR_CREATE_ERROR);
}
i2++;
FileOutputStream fileoutputstream = null;
try {
String s18;
for (s18 = String.valueOf(i2); s18.length() < 3; s18 = '0' + s18) {
;
}
//ת<><D7AA><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
s20 = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + s18;
int j2 = s12.lastIndexOf(46);
if (j2 > 0) {
String s19 = s12.substring(j2, s12.length());
s20 = s20 + s19;
}
s14 = path + File.separator + s20;
fileoutputstream = new FileOutputStream(s14);
}
catch (IOException _ex) {
throw new Exception(FILE_OUTPUT_STREAM_IOEXCEPTION);
}
int k1 = 0;
boolean flag2 = true;
boolean flag5 = false;
int k2 = 0;
int l2 = 0;
do {
int l;
try {
l = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += l;
k1 += l;
if (k1 > maxFileSize)throw new Exception(FILE_SIZE_ERROR);
String s5 = null;
s5 = new String(abyte0, 0, l);
if (s5.length() >= code.length() &&
s5.substring(0, code.length()).equals(code)) {
try {
fileoutputstream.close();
}
catch (IOException _ex) {
throw new Exception(CLOSE_IOEXCEPTION);
}
k1 -= l;
k1 -= 2;
integer = new Integer(k1);
flag2 = false;
}
if (flag2) {
try {
if (flag5) {
fileoutputstream.write(k2);
fileoutputstream.write(l2);
}
if (l >= 2) {
k2 = abyte0[l - 2];
l2 = abyte0[l - 1];
fileoutputstream.write(abyte0, 0, l - 2);
flag5 = true;
} else {
k2 = 0;
l2 = 0;
fileoutputstream.write(abyte0, 0, l);
flag5 = false;
}
}
catch (IOException _ex) {
throw new Exception(WRITE_IOEXCEPTION);
}
}
}
while (flag2 && contentLength > cursor);
}
String srcname = "";
int b;
b = s12.lastIndexOf(92);
if (b < 0) b = s12.lastIndexOf(47);
if (b > -1) {
srcname = s12.substring(b + 1, s12.length());
}
uploadParameterNames.addElement(parameterName);
uploadSrcFileNames.addElement(srcname);
uploadFileNames.addElement(s20);
uploadFileTypes.addElement(filetype);
uploadFileSizes.addElement(integer);
} else {
// is not file
boolean flag3 = true;
String tempvalue = "";
do {
int i1;
try {
i1 = servletinputstream.readLine(abyte0, 0, BUF_SIZE);
}
catch (IOException _ex) {
throw new Exception(READLINE_IOEXCEPTION);
}
cursor += i1;
String s6 = null;
s6 = new String(abyte0, 0, i1);
if (s6.length() >= code.length() &&
s6.substring(0, code.length()).equals(code)) {
flag3 = false;
}
if (flag3) {
tempvalue = tempvalue + s6.substring(0, s6.length());
}
}
while (flag3 && contentLength > cursor);
tempvalue = tempvalue.substring(0, tempvalue.length() - 2);
parameterNames.addElement(parameterName);
parameterValues.addElement(tempvalue);
}
}
}
private String getParameter(HttpServletRequest httpservletrequest, String s)
throws
Exception {
String as[] = null;
String s1 = null;
as = httpservletrequest.getParameterValues(s);
if (as != null) {
s1 = as[0];
}
return s1;
}
public String[] getParameterNames() {
int j = parameterNames.size();
String as[] = new String[j];
for (int i = 0; i < j; i++) {
as[i] = (String) parameterNames.elementAt(i);
}
return as;
}
public String getParameterValue(String s) {
int i = parameterNames.indexOf(s);
String s1;
if (i < 0) {
s1 = null;
} else {
s1 = (String) parameterValues.elementAt(i);
}
if (s1 == null) {
return "";
} else {
return s1;
}
}
public String getUploadFileName(String s) {
int i = uploadParameterNames.indexOf(s);
String s1;
if (i < 0) {
s1 = null;
} else {
s1 = (String) uploadFileNames.elementAt(i);
}
return s1;
}
public String[] getUploadFileName() {
int j = uploadParameterNames.size();
String as[] = new String[j];
for (int i = 0; i < j; i++) {
as[i] = (String) uploadParameterNames.elementAt(i);
}
return as;
}
public Integer getUploadFileSize(String s) {
int i = uploadParameterNames.indexOf(s);
Integer integer;
if (i < 0) {
integer = null;
} else {
integer = (Integer) uploadFileSizes.elementAt(i);
}
return integer;
}
public String getUploadFileType(String s) {
int i = uploadParameterNames.indexOf(s);
String s1;
if (i < 0) {
s1 = null;
} else {
s1 = (String) uploadFileTypes.elementAt(i);
}
return s1;
}
public String[] getUploadParameterNames() {
int j = uploadParameterNames.size();
String as[] = new String[j];
for (int i = 0; i < j; i++) {
as[i] = (String) uploadParameterNames.elementAt(i);
}
return as;
}
public String getUploadSrcFileName(String s) {
int i = uploadParameterNames.indexOf(s);
String s1;
if (i < 0) {
s1 = null;
} else {
s1 = (String) uploadSrcFileNames.elementAt(i);
}
if (s1 == null) {
return "";
} else {
return s1;
}
}
public void release() {
parameterNames.removeAllElements();
parameterValues.removeAllElements();
uploadParameterNames.removeAllElements();
uploadSrcFileNames.removeAllElements();
uploadFileNames.removeAllElements();
uploadFileTypes.removeAllElements();
uploadFileSizes.removeAllElements();
}
/**
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD>ΪСд<D0A1><D0B4>ĸ<EFBFBD><C4B8>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>(2002-9-28 16:54:47)
* @return java.lang.String
* @param filename java.lang.String
*/
public static String convertSuffix(String filename) {
int strNum = 0; //<2F>ַ<EFBFBD>"."<22><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
strNum = filename.indexOf(".");
if (strNum > -1) {
String firstname = ""; //<2F>ļ<EFBFBD><C4BC><EFBFBD>
firstname = filename.substring(0, strNum);
String secondname = ""; //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
secondname = filename.substring(strNum + 1);
secondname = secondname.toLowerCase(); //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪСд<D0A1><D0B4>ĸ
filename = firstname + "." + secondname; //<2F><><EFBFBD>ºϳ<C2BA><CFB3>ļ<EFBFBD><C4BC><EFBFBD>
}
return filename;
}
public int getMaxFileSize() {
return maxFileSize;
}
public void setMaxFileSize(int msize) {
this.maxFileSize = msize;
}
}