Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hw5.servlet;
- import java.io.File;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.util.List;
- import java.util.UUID;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.apache.commons.fileupload.FileItem;
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
- import hw5.model.*;
- @WebServlet("/Upload")
- public class Upload extends HttpServlet {
- private static final long serialVersionUID = 1L;
- static int count = 0;
- public Upload() {
- super();
- }
- protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
- String userIdStr = (String) request.getSession().getAttribute("userId");
- if (userIdStr == null)
- {
- response.sendRedirect("Login");
- return;
- }
- int userId = Integer.parseInt(userIdStr);
- String error = "Error:+No+parent+folder+specified.";
- if (request.getParameter("id") == null)
- {
- response.sendRedirect("FileBrowser?err=" + error);
- return;
- }
- FsFile parentFolder = sqlConnect.getFileById(Integer.parseInt(request.getParameter("id")));
- if (parentFolder != null && parentFolder.getOwnerId() != userId)
- {
- response.sendRedirect("FileBrowser?err=Error:+no+permission");
- return;
- }
- request.getRequestDispatcher( "/WEB-INF/Upload.jsp").forward( request, response );
- }
- protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
- String userIdStr = (String) request.getSession().getAttribute("userId");
- if (userIdStr == null)
- {
- response.sendRedirect("Login");
- return;
- }
- int userId = Integer.parseInt(userIdStr);
- // Create a factory for disk-based file items
- DiskFileItemFactory factory = new DiskFileItemFactory();
- // Configure a repository (to ensure a secure temp location is used)
- ServletContext servletContext = this.getServletConfig().getServletContext();
- File repository = (File) servletContext.getAttribute( "javax.servlet.context.tempdir" );
- factory.setRepository( repository );
- // Create a new file upload handler
- ServletFileUpload upload = new ServletFileUpload( factory );
- // Count how many files are uploaded
- //int count = 0;
- //count = count + 1 - 1;
- // The directory we want to save the uploaded files to.
- String fileDir = getServletContext().getRealPath( "/WEB-INF/files" );
- String parentIdStr = request.getParameter("id");
- int parentId = Integer.parseInt(parentIdStr);
- // Parse the request
- try
- {
- List<FileItem> items = upload.parseRequest( request );
- for( FileItem item : items )
- {
- // If the item is not a form field - meaning it's an uploaded
- // file, we save it to the target dir
- if( !item.isFormField() )
- {
- String tmpId = UUID.randomUUID().toString();
- String fileName = (new File( item.getName() )).getName();
- File file = new File( fileDir, tmpId );
- File fileType = new File(fileDir, fileName); //for finding file type
- item.write( file );
- String type = Files.probeContentType(fileType.toPath());
- long fileSize = file.length();
- String newFileName = sqlConnect.newFile(fileName, type, fileSize, parentId, userId );
- File tmp = new File(fileDir, newFileName);
- file.renameTo(tmp);
- ++count;
- }
- }
- }
- catch( Exception e )
- {
- throw new IOException( e );
- }
- response.sendRedirect( "FileBrowser?id=" + parentId );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement