Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. package hw5.servlet;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.nio.file.Files;
  6. import java.util.List;
  7. import java.util.UUID;
  8.  
  9. import javax.servlet.ServletContext;
  10. import javax.servlet.ServletException;
  11. import javax.servlet.annotation.WebServlet;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15.  
  16. import org.apache.commons.fileupload.FileItem;
  17. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  18. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  19.  
  20. import hw5.model.*;
  21.  
  22. @WebServlet("/Upload")
  23. public class Upload extends HttpServlet {
  24. private static final long serialVersionUID = 1L;
  25.  
  26. static int count = 0;
  27. public Upload() {
  28. super();
  29. }
  30. protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
  31. String userIdStr = (String) request.getSession().getAttribute("userId");
  32. if (userIdStr == null)
  33. {
  34. response.sendRedirect("Login");
  35. return;
  36. }
  37. int userId = Integer.parseInt(userIdStr);
  38. String error = "Error:+No+parent+folder+specified.";
  39. if (request.getParameter("id") == null)
  40. {
  41. response.sendRedirect("FileBrowser?err=" + error);
  42. return;
  43. }
  44. FsFile parentFolder = sqlConnect.getFileById(Integer.parseInt(request.getParameter("id")));
  45. if (parentFolder != null && parentFolder.getOwnerId() != userId)
  46. {
  47. response.sendRedirect("FileBrowser?err=Error:+no+permission");
  48. return;
  49. }
  50.  
  51. request.getRequestDispatcher( "/WEB-INF/Upload.jsp").forward( request, response );
  52.  
  53. }
  54.  
  55. protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
  56. String userIdStr = (String) request.getSession().getAttribute("userId");
  57. if (userIdStr == null)
  58. {
  59. response.sendRedirect("Login");
  60. return;
  61. }
  62. int userId = Integer.parseInt(userIdStr);
  63.  
  64.  
  65. // Create a factory for disk-based file items
  66. DiskFileItemFactory factory = new DiskFileItemFactory();
  67.  
  68. // Configure a repository (to ensure a secure temp location is used)
  69. ServletContext servletContext = this.getServletConfig().getServletContext();
  70. File repository = (File) servletContext.getAttribute( "javax.servlet.context.tempdir" );
  71. factory.setRepository( repository );
  72.  
  73. // Create a new file upload handler
  74. ServletFileUpload upload = new ServletFileUpload( factory );
  75.  
  76. // Count how many files are uploaded
  77. //int count = 0;
  78. //count = count + 1 - 1;
  79. // The directory we want to save the uploaded files to.
  80. String fileDir = getServletContext().getRealPath( "/WEB-INF/files" );
  81.  
  82.  
  83. String parentIdStr = request.getParameter("id");
  84. int parentId = Integer.parseInt(parentIdStr);
  85.  
  86. // Parse the request
  87. try
  88. {
  89. List<FileItem> items = upload.parseRequest( request );
  90. for( FileItem item : items )
  91. {
  92. // If the item is not a form field - meaning it's an uploaded
  93. // file, we save it to the target dir
  94. if( !item.isFormField() )
  95. {
  96. String tmpId = UUID.randomUUID().toString();
  97. String fileName = (new File( item.getName() )).getName();
  98.  
  99. File file = new File( fileDir, tmpId );
  100. File fileType = new File(fileDir, fileName); //for finding file type
  101. item.write( file );
  102. String type = Files.probeContentType(fileType.toPath());
  103. long fileSize = file.length();
  104.  
  105. String newFileName = sqlConnect.newFile(fileName, type, fileSize, parentId, userId );
  106.  
  107. File tmp = new File(fileDir, newFileName);
  108. file.renameTo(tmp);
  109.  
  110. ++count;
  111. }
  112. }
  113. }
  114. catch( Exception e )
  115. {
  116. throw new IOException( e );
  117. }
  118. response.sendRedirect( "FileBrowser?id=" + parentId );
  119. }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement