Как загрузить файлы на серверной папке с помощью jsp

Я пытаюсь загрузить некоторые изображения в папку, которая находится на моем сервере, используя servlet / jsp.

Ниже мой код, который работает на моей локальной машине:

import java.io.*; import java.util.*; import javax.servlet.ServletConfig; import javax.servlet.ServletException; 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.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.output.*; public class UploadServlet extends HttpServlet { private boolean isMultipart; private String filePath; private int maxFileSize = 1000 * 1024; private int maxMemSize = 1000 * 1024; private File file ; public void init( ){ // Get the file location where it would be stored. filePath = getServletContext().getInitParameter("file-upload"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { // Check that we have a file upload request isMultipart = ServletFileUpload.isMultipartContent(request); response.setContentType("text/html"); java.io.PrintWriter out = response.getWriter( ); if( !isMultipart ){ out.println(""); out.println(""); out.println("Servlet upload"); out.println(""); out.println(""); out.println("

No file uploaded

"); out.println(""); out.println(""); return; } DiskFileItemFactory factory = new DiskFileItemFactory(); // maximum size that will be stored in memory factory.setSizeThreshold(maxMemSize); // Location to save data that is larger than maxMemSize. factory.setRepository(new File(" C:/Users/puneet verma/Downloads/")); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // maximum file size to be uploaded. upload.setSizeMax( maxFileSize ); try{ // Parse the request to get file items. List fileItems = upload.parseRequest(request); // Process the uploaded file items Iterator i = fileItems.iterator(); out.println(""); out.println(""); out.println("Servlet upload"); out.println(""); out.println(""); while ( i.hasNext () ) { FileItem fi = (FileItem)i.next(); if ( !fi.isFormField () ) { // Get the uploaded file parameters String fieldName = fi.getFieldName(); String fileName = fi.getName(); String contentType = fi.getContentType(); boolean isInMemory = fi.isInMemory(); long sizeInBytes = fi.getSize(); // Write the file if( fileName.lastIndexOf("\\") >= 0 ){ file = new File( filePath + fileName.substring( fileName.lastIndexOf("\\"))) ; }else{ file = new File( filePath + fileName.substring(fileName.lastIndexOf("\\")+1)) ; } fi.write( file ) ; out.println("Uploaded Filename: " + fileName + "
"); } } out.println(""); out.println(""); }catch(Exception ex) { System.out.println(ex); } } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { throw new ServletException("GET method used with " + getClass( ).getName( )+": POST method required."); } }

Теперь мой jsp-код, где я загружаю файл:

     File Uploading Form   

File Upload:

Select a file to upload:

В файле My web.xml я включил путь следующим образом:

   Location to store uploaded file file-upload  C:\Users\puneet verma\Downloads\   

Я использовал свой путь к серверу http://grand-shopping.com/ , но он вообще не работает.

Библиотеки, которые я использую:

  1. Обще-FileUpload-1.3.jar
  2. Обще-ю-2.2.jar

Может ли кто-нибудь предложить мне, как именно мне нужно определить свой путь к серверу, чтобы успешно загружать изображения.

Ниже код работает на моем живом сервере, а также в моем собственном Lapy.

Заметка:

Создайте папку данных в WebContent и поместите в любое изображение или любой файл (jsp или html-файл).

Добавить файлы jar

Викисклад коллекция-3.1.jar
Обще-FileUpload-1.2.2.jar
Обще-ю-2.1.jar
Обще-каротаж 1.0.4.jar

upload.jsp

  <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>     File Upload   
Select file to upload:

UploadServlet.java

 package com.servlet; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; 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.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * Servlet implementation class UploadServlet */ public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final String DATA_DIRECTORY = "data"; private static final int MAX_MEMORY_SIZE = 1024 * 1024 * 2; private static final int MAX_REQUEST_SIZE = 1024 * 1024; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Check that we have a file upload request boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (!isMultipart) { return; } // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Sets the size threshold beyond which files are written directly to // disk. factory.setSizeThreshold(MAX_MEMORY_SIZE); // Sets the directory used to temporarily store files that are larger // than the configured size threshold. We use temporary directory for // java factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); // constructs the folder where uploaded file will be stored String uploadFolder = getServletContext().getRealPath("") + File.separator + DATA_DIRECTORY; // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); // Set overall request size constraint upload.setSizeMax(MAX_REQUEST_SIZE); try { // Parse the request List items = upload.parseRequest(request); Iterator iter = items.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); if (!item.isFormField()) { String fileName = new File(item.getName()).getName(); String filePath = uploadFolder + File.separator + fileName; File uploadedFile = new File(filePath); System.out.println(filePath); // saves the file to upload directory item.write(uploadedFile); } } // displays done.jsp page after upload finished getServletContext().getRequestDispatcher("/done.jsp").forward( request, response); } catch (FileUploadException ex) { throw new ServletException(ex); } catch (Exception ex) { throw new ServletException(ex); } } } 

web.xml

    UploadServlet UploadServlet com.servlet.UploadServlet   UploadServlet /UploadServlet  

done.jsp

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>     Upload Done   

Your file has been uploaded!

 public class FileUploadExample extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { // Create a factory for disk-based file items FileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); try { // Parse the request List items = upload.parseRequest(request); Iterator iterator = items.iterator(); while (iterator.hasNext()) { FileItem item = (FileItem) iterator.next(); if (!item.isFormField()) { String fileName = item.getName(); String root = getServletContext().getRealPath("/"); File path = new File(root + "/uploads"); if (!path.exists()) { boolean status = path.mkdirs(); } File uploadedFile = new File(path + "/" + fileName); System.out.println(uploadedFile.getAbsolutePath()); item.write(uploadedFile); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } } 

Вы не можете загрузить так.

 http://grand-shopping.com/<"some folder"> 

Вам нужен физический путь точно так же, как в вашем местном

 C:/Users/puneet verma/Downloads/ 

Что вы можете сделать, так это создать локальный путь, на котором работает ваш сервер. Следовательно, вы можете хранить и извлекать файл. Если вы купили какой-либо домен с любых веб-сайтов, будет существовать путь для загрузки файлов. Вы создаете эту переменную как статическую константу и используете ее на основе сервера, на котором вы работаете (локальный / веб-сайт).

Вы можете использовать только абсолютный путь http://grand-shopping.com/ <"некоторая папка"> не является абсолютным путем.

Либо вы можете использовать путь внутри приложения, который является vurneable, либо вы можете использовать определенный для сервера путь, как в

 windows -> C:/Users/puneet verma/Downloads/ linux -> /opt/Downloads/ 

Я нашел подобную проблему и нашел решение, и у меня есть блог о том, как загрузить файл с помощью JSP. В этом примере я использовал абсолютный путь. Обратите внимание: если вы хотите перейти на другое местоположение на основе URL-адреса, вы можете поместить ESB, например, WSO2 ESB

  • Использование подстановочных знаков в запросе wget или curl
  • Как решить этот java.lang.NoClassDefFoundError: org / apache / commons / io / output / DeferredFileOutputStream?
  • Как загрузить файл с помощью VBA (без Internet Explorer)
  • Скачать файл с помощью libcurl в C / C ++
  • escapeshellarg () отключен по соображениям безопасности
  • Java Подождите, пока stream завершится
  • Visual C ++ 2008 Express Загрузить ссылку Dead?
  • Как загрузить файл с помощью Selenium WebDriver в Java
  • Загрузите файл с сервера NodeJS с помощью Express
  • Загрузка файла Symfony2
  • Предварительный просмотр изображения перед загрузкой Angularjs
  • Давайте будем гением компьютера.