1 File.java
   2 
   3 import java.io.ByteArrayInputStream;
   4 import java.io.FileOutputStream;
   5 import java.io.IOException;
   6 import java.math.BigInteger;
   7 import java.sql.ResultSet;
   8 import java.sql.SQLException;
   9 import javax.servlet.ServletException;
  10 
  11 // Referenced classes of package com.jspsmart.upload:
  12 // SmartUploadException, SmartUpload
  13 
  14 public class File
  15 {
  16 
  17 private SmartUpload m_parent;
  18 private int m_startData;
  19 private int m_endData;
  20 private int m_size;
  21 private String m_fieldname;
  22 private String m_filename;
  23 private String m_fileExt;
  24 private String m_filePathName;
  25 private String m_contentType;
  26 private String m_contentDisp;
  27 private String m_typeMime;
  28 private String m_subTypeMime;
  29 private String m_contentString;
  30 private boolean m_isMissing;
  31 public static final int SAVEAS_AUTO = 0;
  32 public static final int SAVEAS_VIRTUAL = 1;
  33 public static final int SAVEAS_PHYSICAL = 2;
  34 
  35 File()
  36 {
  37 m_startData = 0;
  38 m_endData = 0;
  39 m_size = 0;
  40 m_fieldname = new String();
  41 m_filename = new String();
  42 m_fileExt = new String();
  43 m_filePathName = new String();
  44 m_contentType = new String();
  45 m_contentDisp = new String();
  46 m_typeMime = new String();
  47 m_subTypeMime = new String();
  48 m_contentString = new String();
  49 m_isMissing = true;
  50 }
  51 
  52 public void saveAs(String s)
  53 throws IOException, SmartUploadException
  54 {
  55 saveAs(s, 0);
  56 }
  57 
  58 public void saveAs(String s, int i)
  59 throws IOException, SmartUploadException
  60 {
  61 String s1 = new String();
  62 s1 = m_parent.getPhysicalPath(s, i);
  63 if(s1 == null)
  64 throw new IllegalArgumentException("There is no specified destination file (1140).");
  65 try
  66 {
  67 java.io.File file = new java.io.File(s1);
  68 FileOutputStream fileoutputstream = new FileOutputStream(file);
  69 fileoutputstream.write(m_parent.m_binArray, m_startData, m_size);
  70 fileoutputstream.close();
  71 }
  72 catch(IOException ioexception)
  73 {
  74 throw new SmartUploadException("File can't be saved (1120).");
  75 }
  76 }
  77 
  78 public void fileToField(ResultSet resultset, String s)
  79 throws ServletException, IOException, SmartUploadException, SQLException
  80 {
  81 long l = 0L;
  82 int i = 0x10000;
  83 int j = 0;
  84 int k = m_startData;
  85 if(resultset == null)
  86 throw new IllegalArgumentException("The RecordSet cannot be null (1145).");
  87 if(s == null)
  88 throw new IllegalArgumentException("The columnName cannot be null (1150).");
  89 if(s.length() == 0)
  90 throw new IllegalArgumentException("The columnName cannot be empty (1155).");
  91 = BigInteger.valueOf(m_size).divide(BigInteger.valueOf(i)).longValue();
  92 = BigInteger.valueOf(m_size).mod(BigInteger.valueOf(i)).intValue();
  93 try
  94 {
  95 for(int i1 = 1; (long)i1 < l; i1++)
  96 {
  97 resultset.updateBinaryStream(s, new ByteArrayInputStream(m_parent.m_binArray, k, i), i);
  98 = k != 0 ? k : 1;
  99 = i1 * i + m_startData;
 100 }
 101 
 102 if(j > 0)
 103 resultset.updateBinaryStream(s, new ByteArrayInputStream(m_parent.m_binArray, k, j), j);
 104 }
 105 catch(SQLException sqlexception)
 106 {
 107 byte abyte0[] = new byte[m_size];
 108 System.arraycopy(m_parent.m_binArray, m_startData, abyte0, 0, m_size);
 109 resultset.updateBytes(s, abyte0);
 110 }
 111 catch(Exception exception)
 112 {
 113 throw new SmartUploadException("Unable to save file in the DataBase (1130).");
 114 }
 115 }
 116 
 117 public boolean isMissing()
 118 {
 119 return m_isMissing;
 120 }
 121 
 122 public String getFieldName()
 123 {
 124 return m_fieldname;
 125 }
 126 
 127 public String getFileName()
 128 {
 129 return m_filename;
 130 }
 131 
 132 public String getFilePathName()
 133 {
 134 return m_filePathName;
 135 }
 136 
 137 public String getFileExt()
 138 {
 139 return m_fileExt;
 140 }
 141 
 142 public String getContentType()
 143 {
 144 return m_contentType;
 145 }
 146 
 147 public String getContentDisp()
 148 {
 149 return m_contentDisp;
 150 }
 151 
 152 public String getContentString()
 153 {
 154 String s = new String(m_parent.m_binArray, m_startData, m_size);
 155 return s;
 156 }
 157 
 158 public String getTypeMIME()
 159 throws IOException
 160 {
 161 return m_typeMime;
 162 }
 163 
 164 public String getSubTypeMIME()
 165 {
 166 return m_subTypeMime;
 167 }
 168 
 169 public int getSize()
 170 {
 171 return m_size;
 172 }
 173 
 174 protected int getStartData()
 175 {
 176 return m_startData;
 177 }
 178 
 179 protected int getEndData()
 180 {
 181 return m_endData;
 182 }
 183 
 184 protected void setParent(SmartUpload smartupload)
 185 {
 186 m_parent = smartupload;
 187 }
 188 
 189 protected void setStartData(int i)
 190 {
 191 m_startData = i;
 192 }
 193 
 194 protected void setEndData(int i)
 195 {
 196 m_endData = i;
 197 }
 198 
 199 protected void setSize(int i)
 200 {
 201 m_size = i;
 202 }
 203 
 204 protected void setIsMissing(boolean flag)
 205 {
 206 m_isMissing = flag;
 207 }
 208 
 209 protected void setFieldName(String s)
 210 {
 211 m_fieldname = s;
 212 }
 213 
 214 protected void setFileName(String s)
 215 {
 216 m_filename = s;
 217 }
 218 
 219 protected void setFilePathName(String s)
 220 {
 221 m_filePathName = s;
 222 }
 223 
 224 protected void setFileExt(String s)
 225 {
 226 m_fileExt = s;
 227 }
 228 
 229 protected void setContentType(String s)
 230 {
 231 m_contentType = s;
 232 }
 233 
 234 protected void setContentDisp(String s)
 235 {
 236 m_contentDisp = s;
 237 }
 238 
 239 protected void setTypeMIME(String s)
 240 {
 241 m_typeMime = s;
 242 }
 243 
 244 protected void setSubTypeMIME(String s)
 245 {
 246 m_subTypeMime = s;
 247 }
 248 
 249 public byte getBinaryData(int i)
 250 {
 251 if(m_startData + i > m_endData)
 252 throw new ArrayIndexOutOfBoundsException("Index Out of range (1115).");
 253 if(m_startData + i <= m_endData)
 254 return m_parent.m_binArray[m_startData + i];
 255 else
 256 return 0;
 257 }
 258 }
 259 
 260 
 261 Files.java
 262 
 263 import java.io.IOException;
 264 import java.util.*;
 265 
 266 // Referenced classes of package com.jspsmart.upload:
 267 // File, SmartUpload
 268 
 269 public class Files
 270 {
 271 
 272 private SmartUpload m_parent;
 273 private Hashtable m_files;
 274 private int m_counter;
 275 
 276 Files()
 277 {
 278 m_files = new Hashtable();
 279 m_counter = 0;
 280 }
 281 
 282 protected void addFile(File file)
 283 {
 284 if(file == null)
 285 {
 286 throw new IllegalArgumentException("newFile cannot be null.");
 287 else
 288 {
 289 m_files.put(new Integer(m_counter), file);
 290 m_counter++;
 291 return;
 292 }
 293 }
 294 
 295 public File getFile(int i)
 296 {
 297 if(i < 0)
 298 throw new IllegalArgumentException("File's index cannot be a negative value (1210).");
 299 File file = (File)m_files.get(new Integer(i));
 300 if(file == null)
 301 throw new IllegalArgumentException("Files' name is invalid or does not exist (1205).");
 302 else
 303 return file;
 304 }
 305 
 306 public int getCount()
 307 {
 308 return m_counter;
 309 }
 310 
 311 public long getSize()
 312 throws IOException
 313 {
 314 long l = 0L;
 315 for(int i = 0; i < m_counter; i++)
 316 += getFile(i).getSize();
 317 
 318 return l;
 319 }
 320 
 321 public Collection getCollection()
 322 {
 323 return m_files.values();
 324 }
 325 
 326 public Enumeration getEnumeration()
 327 {
 328 return m_files.elements();
 329 }
 330 }
 331 
 332 
 333 Request.java
 334 
 335 import java.util.Enumeration;
 336 import java.util.Hashtable;
 337 
 338 public class Request
 339 {
 340 
 341 private Hashtable m_parameters;
 342 private int m_counter;
 343 
 344 Request()
 345 {
 346 m_parameters = new Hashtable();
 347 m_counter = 0;
 348 }
 349 
 350 protected void putParameter(String s, String s1)
 351 {
 352 if(s == null)
 353 throw new IllegalArgumentException("The name of an element cannot be null.");
 354 if(m_parameters.containsKey(s))
 355 {
 356 Hashtable hashtable = (Hashtable)m_parameters.get(s);
 357 hashtable.put(new Integer(hashtable.size()), s1);
 358 else
 359 {
 360 Hashtable hashtable1 = new Hashtable();
 361 hashtable1.put(new Integer(0), s1);
 362 m_parameters.put(s, hashtable1);
 363 m_counter++;
 364 }
 365 }
 366 
 367 public String getParameter(String s)
 368 {
 369 if(s == null)
 370 throw new IllegalArgumentException("Form's name is invalid or does not exist (1305).");
 371 Hashtable hashtable = (Hashtable)m_parameters.get(s);
 372 if(hashtable == null)
 373 return null;
 374 else
 375 return (String)hashtable.get(new Integer(0));
 376 }
 377 
 378 public Enumeration getParameterNames()
 379 {
 380 return m_parameters.keys();
 381 }
 382 
 383 public String[] getParameterValues(String s)
 384 {
 385 if(s == null)
 386 throw new IllegalArgumentException("Form's name is invalid or does not exist (1305).");
 387 Hashtable hashtable = (Hashtable)m_parameters.get(s);
 388 if(hashtable == null)
 389 return null;
 390 String as[] = new String[hashtable.size()];
 391 for(int i = 0; i < hashtable.size(); i++)
 392 as[i] = (String)hashtable.get(new Integer(i));
 393 
 394 return as;
 395 }
 396 }
 397 
 398 
 399 SmartUploadException .java
 400 
 401 public class SmartUploadException extends Exception
 402 {
 403 
 404 SmartUploadException(String s)
 405 {
 406 super(s);
 407 }
 408 }
 409 
 410 
 411 SmartUpload.java
 412 
 413 import java.io.*;
 414 import java.sql.ResultSet;
 415 import java.sql.SQLException;
 416 import java.util.Vector;
 417 import javax.servlet.*;
 418 import javax.servlet.http.*;
 419 import javax.servlet.jsp.JspWriter;
 420 import javax.servlet.jsp.PageContext;
 421 
 422 // Referenced classes of package com.jspsmart.upload:
 423 // Files, Request, SmartUploadException, File
 424 
 425 public class SmartUpload
 426 {
 427 
 428 protected byte m_binArray[];
 429 protected HttpServletRequest m_request;
 430 protected HttpServletResponse m_response;
 431 protected ServletContext m_application;
 432 private int m_totalBytes;
 433 private int m_currentIndex;
 434 private int m_startData;
 435 private int m_endData;
 436 private String m_boundary;
 437 private long m_totalMaxFileSize;
 438 private long m_maxFileSize;
 439 private Vector m_deniedFilesList;
 440 private Vector m_allowedFilesList;
 441 private boolean m_denyPhysicalPath;
 442 private boolean m_forcePhysicalPath;
 443 private String m_contentDisposition;
 444 public static final int SAVE_AUTO = 0;
 445 public static final int SAVE_VIRTUAL = 1;
 446 public static final int SAVE_PHYSICAL = 2;
 447 private Files m_files;
 448 private Request m_formRequest;
 449 
 450 public SmartUpload()
 451 {
 452 m_totalBytes = 0;
 453 m_currentIndex = 0;
 454 m_startData = 0;
 455 m_endData = 0;
 456 m_boundary = new String();
 457 m_totalMaxFileSize = 0L;
 458 m_maxFileSize = 0L;
 459 m_deniedFilesList = new Vector();
 460 m_allowedFilesList = new Vector();
 461 m_denyPhysicalPath = false;
 462 m_forcePhysicalPath = false;
 463 m_contentDisposition = new String();
 464 m_files = new Files();
 465 m_formRequest = new Request();
 466 }
 467 
 468 public final void init(ServletConfig servletconfig)
 469 throws ServletException
 470 {
 471 m_application = servletconfig.getServletContext();
 472 }
 473 
 474 public void service(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
 475 throws ServletException, IOException
 476 {
 477 m_request = httpservletrequest;
 478 m_response = httpservletresponse;
 479 }
 480 
 481 public final void initialize(ServletConfig servletconfig, HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
 482 throws ServletException
 483 {
 484 m_application = servletconfig.getServletContext();
 485 m_request = httpservletrequest;
 486 m_response = httpservletresponse;
 487 }
 488 
 489 public final void initialize(PageContext pagecontext)
 490 throws ServletException
 491 {
 492 m_application = pagecontext.getServletContext();
 493 m_request = (HttpServletRequest)pagecontext.getRequest();
 494 m_response = (HttpServletResponse)pagecontext.getResponse();
 495 }
 496 
 497 public final void initialize(ServletContext servletcontext, HttpSession httpsession, HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, JspWriter jspwriter)
 498 throws ServletException
 499 {
 500 m_application = servletcontext;
 501 m_request = httpservletrequest;
 502 m_response = httpservletresponse;
 503 }
 504 
 505 public void upload()
 506 throws ServletException, IOException, SmartUploadException
 507 {
 508 int i = 0;
 509 boolean flag = false;
 510 long l = 0L;
 511 boolean flag1 = false;
 512 String s = new String();
 513 String s2 = new String();
 514 String s4 = new String();
 515 String s5 = new String();
 516 String s6 = new String();
 517 String s7 = new String();
 518 String s8 = new String();
 519 String s9 = new String();
 520 String s10 = new String();
 521 boolean flag2 = false;
 522 m_totalBytes = m_request.getContentLength();
 523 m_binArray = new byte[m_totalBytes];
 524 int j;
 525 for(; i < m_totalBytes; i += j)
 526 try
 527 {
 528 m_request.getInputStream();
 529 = m_request.getInputStream().read(m_binArray, i, m_totalBytes - i);
 530 }
 531 catch(Exception exception)
 532 {
 533 throw new SmartUploadException("Unable to upload.");
 534 }
 535 
 536 for(; !flag1 && m_currentIndex < m_totalBytes; m_currentIndex++)
 537 if(m_binArray[m_currentIndex] == 13)
 538 flag1 = true;
 539 else
 540 m_boundary = m_boundary + (char)m_binArray[m_currentIndex];
 541 
 542 if(m_currentIndex == 1)
 543 return;
 544 for(m_currentIndex++; m_currentIndex < m_totalBytes; m_currentIndex = m_currentIndex + 2)
 545 {
 546 String s1 = getDataHeader();
 547 m_currentIndex = m_currentIndex + 2;
 548 boolean flag3 = s1.indexOf("filename"> 0;
 549 String s3 = getDataFieldValue(s1, "name");
 550 if(flag3)
 551 {
 552 s6 = getDataFieldValue(s1, "filename");
 553 s4 = getFileName(s6);
 554 s5 = getFileExt(s4);
 555 s7 = getContentType(s1);
 556 s8 = getContentDisp(s1);
 557 s9 = getTypeMIME(s7);
 558 s10 = getSubTypeMIME(s7);
 559 }
 560 getDataSection();
 561 if(flag3 && s4.length() > 0)
 562 {
 563 if(m_deniedFilesList.contains(s5))
 564 throw new SecurityException("The extension of the file is denied to be uploaded (1015).");
 565 if(!m_allowedFilesList.isEmpty() && !m_allowedFilesList.contains(s5))
 566 throw new SecurityException("The extension of the file is not allowed to be uploaded (1010).");
 567 if(m_maxFileSize > 0L && (long)((m_endData - m_startData) + 1> m_maxFileSize)
 568 throw new SecurityException("Size exceeded for this file : " + s4 + " (1105).");
 569 += (m_endData - m_startData) + 1;
 570 if(m_totalMaxFileSize > 0L && l > m_totalMaxFileSize)
 571 throw new SecurityException("Total File Size exceeded (1110).");
 572 }
 573 if(flag3)
 574 {
 575 com.facet.jspsmart.upload.File file = new com.facet.jspsmart.upload.File();
 576 file.setParent(this);
 577 file.setFieldName(s3);
 578 file.setFileName(s4);
 579 file.setFileExt(s5);
 580 file.setFilePathName(s6);
 581 file.setIsMissing(s6.length() == 0);
 582 file.setContentType(s7);
 583 file.setContentDisp(s8);
 584 file.setTypeMIME(s9);
 585 file.setSubTypeMIME(s10);
 586 if(s7.indexOf("application/x-macbinary"> 0)
 587 m_startData = m_startData + 128;
 588 file.setSize((m_endData - m_startData) + 1);
 589 file.setStartData(m_startData);
 590 file.setEndData(m_endData);
 591 m_files.addFile(file);
 592 else
 593 {
 594 String s11 = new String(m_binArray, m_startData, (m_endData - m_startData) + 1);
 595 m_formRequest.putParameter(s3, s11);
 596 }
 597 if((char)m_binArray[m_currentIndex + 1== '-')
 598 break;
 599 }
 600 
 601 }
 602 
 603 public int save(String s)
 604 throws ServletException, IOException, SmartUploadException
 605 {
 606 return save(s, 0);
 607 }
 608 
 609 public int save(String s, int i)
 610 throws ServletException, IOException, SmartUploadException
 611 {
 612 int j = 0;
 613 if(s == null)
 614 = m_application.getRealPath("/");
 615 if(s.indexOf("/"!= -1)
 616 {
 617 if(s.charAt(s.length() - 1!= '/')
 618 = s + "/";
 619 else
 620 if(s.charAt(s.length() - 1!= '\\')
 621 = s + "\\";
 622 for(int k = 0; k < m_files.getCount(); k++)
 623 if(!m_files.getFile(k).isMissing())
 624 {
 625 m_files.getFile(k).saveAs(s + m_files.getFile(k).getFileName(), i);
 626 j++;
 627 }
 628 
 629 return j;
 630 }
 631 
 632 public int getSize()
 633 {
 634 return m_totalBytes;
 635 }
 636 
 637 public byte getBinaryData(int i)
 638 {
 639 byte byte0;
 640 try
 641 {
 642 byte0 = m_binArray[i];
 643 }
 644 catch(Exception exception)
 645 {
 646 throw new ArrayIndexOutOfBoundsException("Index out of range (1005).");
 647 }
 648 return byte0;
 649 }
 650 
 651 public Files getFiles()
 652 {
 653 return m_files;
 654 }
 655 
 656 public Request getRequest()
 657 {
 658 return m_formRequest;
 659 }
 660 
 661 public void downloadFile(String s)
 662 throws ServletException, IOException, SmartUploadException
 663 {
 664 downloadFile(s, nullnull);
 665 }
 666 
 667 public void downloadFile(String s, String s1)
 668 throws ServletException, IOException, SmartUploadException, SmartUploadException
 669 {
 670 downloadFile(s, s1, null);
 671 }
 672 
 673 public void downloadFile(String s, String s1, String s2)
 674 throws ServletException, IOException, SmartUploadException
 675 {
 676 downloadFile(s, s1, s2, 65000);
 677 }
 678 
 679 public void downloadFile(String s, String s1, String s2, int i)
 680 throws ServletException, IOException, SmartUploadException
 681 {
 682 if(s == null)
 683 throw new IllegalArgumentException("File '" + s + "' not found (1040).");
 684 if(s.equals(""))
 685 throw new IllegalArgumentException("File '" + s + "' not found (1040).");
 686 if(!isVirtual(s) && m_denyPhysicalPath)
 687 throw new SecurityException("Physical path is denied (1035).");
 688 if(isVirtual(s))
 689 = m_application.getRealPath(s);
 690 java.io.File file = new java.io.File(s);
 691 FileInputStream fileinputstream = new FileInputStream(file);
 692 long l = file.length();
 693 boolean flag = false;
 694 int k = 0;
 695 byte abyte0[] = new byte[i];
 696 if(s1 == null)
 697 m_response.setContentType("application/x-msdownload");
 698 else
 699 if(s1.length() == 0)
 700 m_response.setContentType("application/x-msdownload");
 701 else
 702 m_response.setContentType(s1);
 703 m_response.setContentLength((int)l);
 704 m_contentDisposition = m_contentDisposition != null ? m_contentDisposition : "attachment;";
 705 if(s2 == null)
 706 m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + getFileName(s));
 707 else
 708 if(s2.length() == 0)
 709 m_response.setHeader("Content-Disposition", m_contentDisposition);
 710 else
 711 m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + s2);
 712 while((long)k < l)
 713 {
 714 int j = fileinputstream.read(abyte0, 0, i);
 715 += j;
 716 m_response.getOutputStream().write(abyte0, 0, j);
 717 }
 718 fileinputstream.close();
 719 }
 720 
 721 public void downloadField(ResultSet resultset, String s, String s1, String s2)
 722 throws ServletException, IOException, SQLException
 723 {
 724 if(resultset == null)
 725 throw new IllegalArgumentException("The RecordSet cannot be null (1045).");
 726 if(s == null)
 727 throw new IllegalArgumentException("The columnName cannot be null (1050).");
 728 if(s.length() == 0)
 729 throw new IllegalArgumentException("The columnName cannot be empty (1055).");
 730 byte abyte0[] = resultset.getBytes(s);
 731 if(s1 == null)
 732 m_response.setContentType("application/x-msdownload");
 733 else
 734 if(s1.length() == 0)
 735 m_response.setContentType("application/x-msdownload");
 736 else
 737 m_response.setContentType(s1);
 738 m_response.setContentLength(abyte0.length);
 739 if(s2 == null)
 740 m_response.setHeader("Content-Disposition""attachment;");
 741 else
 742 if(s2.length() == 0)
 743 m_response.setHeader("Content-Disposition""attachment;");
 744 else
 745 m_response.setHeader("Content-Disposition""attachment; filename=" + s2);
 746 m_response.getOutputStream().write(abyte0, 0, abyte0.length);
 747 }
 748 
 749 public void fieldToFile(ResultSet resultset, String s, String s1)
 750 throws ServletException, IOException, SmartUploadException, SQLException
 751 {
 752 try
 753 {
 754 if(m_application.getRealPath(s1) != null)
 755 s1 = m_application.getRealPath(s1);
 756 InputStream inputstream = resultset.getBinaryStream(s);
 757 FileOutputStream fileoutputstream = new FileOutputStream(s1);
 758 int i;
 759 while((i = inputstream.read()) != -1)
 760 fileoutputstream.write(i);
 761 fileoutputstream.close();
 762 }
 763 catch(Exception exception)
 764 {
 765 throw new SmartUploadException("Unable to save file from the DataBase (1020).");
 766 }
 767 }
 768 
 769 private String getDataFieldValue(String s, String s1)
 770 {
 771 String s2 = new String();
 772 String s3 = new String();
 773 int i = 0;
 774 boolean flag = false;
 775 boolean flag1 = false;
 776 boolean flag2 = false;
 777 s2 = s1 + "=" + '"';
 778 = s.indexOf(s2);
 779 if(i > 0)
 780 {
 781 int j = i + s2.length();
 782 int k = j;
 783 s2 = "\"";
 784 int l = s.indexOf(s2, j);
 785 if(k > 0 && l > 0)
 786 s3 = s.substring(k, l);
 787 }
 788 return s3;
 789 }
 790 
 791 private String getFileExt(String s)
 792 {
 793 String s1 = new String();
 794 int i = 0;
 795 int j = 0;
 796 if(s == null)
 797 return null;
 798 = s.lastIndexOf(46+ 1;
 799 = s.length();
 800 s1 = s.substring(i, j);
 801 if(s.lastIndexOf(46> 0)
 802 return s1;
 803 else
 804 return "";
 805 }
 806 
 807 private String getContentType(String s)
 808 {
 809 String s1 = new String();
 810 String s2 = new String();
 811 int i = 0;
 812 boolean flag = false;
 813 s1 = "Content-Type:";
 814 = s.indexOf(s1) + s1.length();
 815 if(i != -1)
 816 {
 817 int j = s.length();
 818 s2 = s.substring(i, j);
 819 }
 820 return s2;
 821 }
 822 
 823 private String getTypeMIME(String s)
 824 {
 825 String s1 = new String();
 826 int i = 0;
 827 = s.indexOf("/");
 828 if(i != -1)
 829 return s.substring(1, i);
 830 else
 831 return s;
 832 }
 833 
 834 private String getSubTypeMIME(String s)
 835 {
 836 String s1 = new String();
 837 int i = 0;
 838 boolean flag = false;
 839 = s.indexOf("/"+ 1;
 840 if(i != -1)
 841 {
 842 int j = s.length();
 843 return s.substring(i, j);
 844 else
 845 {
 846 return s;
 847 }
 848 }
 849 
 850 private String getContentDisp(String s)
 851 {
 852 String s1 = new String();
 853 int i = 0;
 854 int j = 0;
 855 = s.indexOf(":"+ 1;
 856 = s.indexOf(";");
 857 s1 = s.substring(i, j);
 858 return s1;
 859 }
 860 
 861 private void getDataSection()
 862 {
 863 boolean flag = false;
 864 String s = new String();
 865 int i = m_currentIndex;
 866 int j = 0;
 867 int k = m_boundary.length();
 868 m_startData = m_currentIndex;
 869 m_endData = 0;
 870 while(i < m_totalBytes)
 871 if(m_binArray[i] == (byte)m_boundary.charAt(j))
 872 {
 873 if(j == k - 1)
 874 {
 875 m_endData = ((i - k) + 1- 3;
 876 break;
 877 }
 878 i++;
 879 j++;
 880 else
 881 {
 882 i++;
 883 = 0;
 884 }
 885 m_currentIndex = m_endData + k + 3;
 886 }
 887 
 888 private String getDataHeader()
 889 {
 890 int i = m_currentIndex;
 891 int j = 0;
 892 boolean flag = false;
 893 for(boolean flag1 = false!flag1;)
 894 if(m_binArray[m_currentIndex] == 13 && m_binArray[m_currentIndex + 2== 13)
 895 {
 896 flag1 = true;
 897 = m_currentIndex - 1;
 898 m_currentIndex = m_currentIndex + 2;
 899 else
 900 {
 901 m_currentIndex++;
 902 }
 903 
 904 String s = new String(m_binArray, i, (j - i) + 1);
 905 return s;
 906 }
 907 
 908 private String getFileName(String s)
 909 {
 910 String s1 = new String();
 911 String s2 = new String();
 912 int i = 0;
 913 boolean flag = false;
 914 boolean flag1 = false;
 915 boolean flag2 = false;
 916 = s.lastIndexOf(47);
 917 if(i != -1)
 918 return s.substring(i + 1, s.length());
 919 = s.lastIndexOf(92);
 920 if(i != -1)
 921 return s.substring(i + 1, s.length());
 922 else
 923 return s;
 924 }
 925 
 926 public void setDeniedFilesList(String s)
 927 throws ServletException, IOException, SQLException
 928 {
 929 String s1 = "";
 930 if(s != null)
 931 {
 932 String s2 = "";
 933 for(int i = 0; i < s.length(); i++)
 934 if(s.charAt(i) == ',')
 935 {
 936 if(!m_deniedFilesList.contains(s2))
 937 m_deniedFilesList.addElement(s2);
 938 s2 = "";
 939 else
 940 {
 941 s2 = s2 + s.charAt(i);
 942 }
 943 
 944 if(s2 != "")
 945 m_deniedFilesList.addElement(s2);
 946 else
 947 {
 948 m_deniedFilesList = null;
 949 }
 950 }
 951 
 952 public void setAllowedFilesList(String s)
 953 {
 954 String s1 = "";
 955 if(s != null)
 956 {
 957 String s2 = "";
 958 for(int i = 0; i < s.length(); i++)
 959 if(s.charAt(i) == ',')
 960 {
 961 if(!m_allowedFilesList.contains(s2))
 962 m_allowedFilesList.addElement(s2);
 963 s2 = "";
 964 else
 965 {
 966 s2 = s2 + s.charAt(i);
 967 }
 968 
 969 if(s2 != "")
 970 m_allowedFilesList.addElement(s2);
 971 else
 972 {
 973 m_allowedFilesList = null;
 974 }
 975 }
 976 
 977 public void setDenyPhysicalPath(boolean flag)
 978 {
 979 m_denyPhysicalPath = flag;
 980 }
 981 
 982 public void setForcePhysicalPath(boolean flag)
 983 {
 984 m_forcePhysicalPath = flag;
 985 }
 986 
 987 public void setContentDisposition(String s)
 988 {
 989 m_contentDisposition = s;
 990 }
 991 
 992 public void setTotalMaxFileSize(long l)
 993 {
 994 m_totalMaxFileSize = l;
 995 }
 996 
 997 public void setMaxFileSize(long l)
 998 {
 999 m_maxFileSize = l;
1000 }
1001 
1002 protected String getPhysicalPath(String s, int i)
1003 throws IOException
1004 {
1005 String s1 = new String();
1006 String s2 = new String();
1007 String s3 = new String();
1008 boolean flag = false;
1009 s3 = System.getProperty("file.separator");
1010 if(s == null)
1011 throw new IllegalArgumentException("There is no specified destination file (1140).");
1012 if(s.equals(""))
1013 throw new IllegalArgumentException("There is no specified destination file (1140).");
1014 if(s.lastIndexOf("\\">= 0)
1015 {
1016 s1 = s.substring(0, s.lastIndexOf("\\"));
1017 s2 = s.substring(s.lastIndexOf("\\"+ 1);
1018 }
1019 if(s.lastIndexOf("/">= 0)
1020 {
1021 s1 = s.substring(0, s.lastIndexOf("/"));
1022 s2 = s.substring(s.lastIndexOf("/"+ 1);
1023 }
1024 s1 = s1.length() != 0 ? s1 : "/";
1025 java.io.File file = new java.io.File(s1);
1026 if(file.exists())
1027 flag = true;
1028 if(i == 0)
1029 {
1030 if(isVirtual(s1))
1031 {
1032 s1 = m_application.getRealPath(s1);
1033 if(s1.endsWith(s3))
1034 s1 = s1 + s2;
1035 else
1036 s1 = s1 + s3 + s2;
1037 return s1;
1038 }
1039 if(flag)
1040 {
1041 if(m_denyPhysicalPath)
1042 throw new IllegalArgumentException("Physical path is denied (1125).");
1043 else
1044 return s;
1045 else
1046 {
1047 throw new IllegalArgumentException("This path does not exist (1135).");
1048 }
1049 }
1050 if(i == 1)
1051 {
1052 if(isVirtual(s1))
1053 {
1054 s1 = m_application.getRealPath(s1);
1055 if(s1.endsWith(s3))
1056 s1 = s1 + s2;
1057 else
1058 s1 = s1 + s3 + s2;
1059 return s1;
1060 }
1061 if(flag)
1062 throw new IllegalArgumentException("The path is not a virtual path.");
1063 else
1064 throw new IllegalArgumentException("This path does not exist (1135).");
1065 }
1066 if(i == 2)
1067 {
1068 if(flag)
1069 if(m_denyPhysicalPath)
1070 throw new IllegalArgumentException("Physical path is denied (1125).");
1071 else
1072 return s;
1073 if(isVirtual(s1))
1074 throw new IllegalArgumentException("The path is not a physical path.");
1075 else
1076 throw new IllegalArgumentException("This path does not exist (1135).");
1077 else
1078 {
1079 return null;
1080 }
1081 }
1082 
1083 public void uploadInFile(String s)
1084 throws IOException, SmartUploadException
1085 {
1086 int i = 0;
1087 int j = 0;
1088 boolean flag = false;
1089 if(s == null)
1090 throw new IllegalArgumentException("There is no specified destination file (1025).");
1091 if(s.length() == 0)
1092 throw new IllegalArgumentException("There is no specified destination file (1025).");
1093 if(!isVirtual(s) && m_denyPhysicalPath)
1094 throw new SecurityException("Physical path is denied (1035).");
1095 = m_request.getContentLength();
1096 m_binArray = new byte[i];
1097 int k;
1098 for(; j < i; j += k)
1099 try
1100 {
1101 = m_request.getInputStream().read(m_binArray, j, i - j);
1102 }
1103 catch(Exception exception)
1104 {
1105 throw new SmartUploadException("Unable to upload.");
1106 }
1107 
1108 if(isVirtual(s))
1109 = m_application.getRealPath(s);
1110 try
1111 {
1112 java.io.File file = new java.io.File(s);
1113 FileOutputStream fileoutputstream = new FileOutputStream(file);
1114 fileoutputstream.write(m_binArray);
1115 fileoutputstream.close();
1116 }
1117 catch(Exception exception1)
1118 {
1119 throw new SmartUploadException("The Form cannot be saved in the specified file (1030).");
1120 }
1121 }
1122 
1123 private boolean isVirtual(String s)
1124 {
1125 if(m_application.getRealPath(s) != null)
1126 {
1127 java.io.File file = new java.io.File(m_application.getRealPath(s));
1128 return file.exists();
1129 else
1130 {
1131 return false;
1132 }
1133 }
1134 }