2014-11-21 4 views
1

У меня есть план разработки веб-приложения в java. Я хочу эту вещь: Сначала мне нужно создать папку на рабочем столе и внутри этой папки, предположим, что я создаю еще 5 папок с именем A, B, C, D, E. Теперь я хочу, если я добавлю какой-либо текст или изображение документ в папке A. тогда только человек логин через имя пользователя A и пароль (некоторый пароль) могут получить доступ к этому конкретному файлу. и то же самое с другими папками. я имею в виду, если admin создает 5 пользователей с именами A, B, C, D, E. и каждый пользователь может получить доступ и загрузить его определенные файлы.Как загрузить файл с конкретным файлом на сервере в java

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

сэр это, что я хочу сделать, но как начать я не знать. , пожалуйста, помогите мне.

спасибо.

ответ

0

Вы должны будете предоставить корневой папки path в web.xml, чтобы ваш сервлет мог получить к нему доступ. Папка должна быть вне папки установки Сервера

<servlet> 
    <servlet-name>CreateFolder</servlet-name> 
    <servlet-class>pckg.CreateFolder</servlet-class> 
</servlet> 

<context-param> 
     <param-name>ParentFolder</param-name> 
     <param-value>/z/y/x/users</param-value> 
</context-param> 

<context-param> 
     <param-name>FileName</param-name> 
     <param-value>xyz.png</param-value> 
</context-param> 

CreateFolder Servlet: -

private String userFolder; 

public void init(ServletConfig config) { 
    userFolder= getServletContext().getInitParameter("ParentFolder"); 
} 

public doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException){ 

    String userName = request.getParameter("UserName"); 
    String location="" 


      if(userName != null){ 
       location +="/"+userName; 
       if (!location .exists()) { 
       location .mkdirs(); //If does not exists then create folder 
       } 
     } 

} 

UploadFile Servlet: -

private String userFolder; 
private String fileName; 
public void init(ServletConfig config) { 
    userFolder= getServletContext().getInitParameter("ParentFolder"); 
    fileName= getServletContext().getInitParameter("FileName"); 
} 

public doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException){ 

    String userName = request.getParameter("UserName"); 
    String location="" 


      if(userName != null){ 
       location +="/"+userName; 
       if (!location .exists()) { 
        UploadeFile(location); 
       } 
     } 

} 


private void UploadeFile(String location){ 

    String file = location+"/"+fileName; 
    //Code to upload the file 

    MoveFile(file);//Move to different location 
    } 

Сначала получите UserName после надлежащей проверки. Прочитать путь к папке от web.xml. Приложите UserName к пути к папке, проверьте, существует ли путь или нет. Если путь не существует, создайте путь.

При загрузке файла пользователю. После успешного завершения загрузки переместите файл в другое место. Следовательно, в следующий раз, когда пользователь войдет в систему, он увидит только новые документы.

0

Попробуйте это. Вы просто отправляете папку, которую хотите скачать, и имя файла. если вы можете получить путь от сеанса, это даст вам более безопасный идентификатор входа для пользователя, которого вы его создали. если загрузить новые данные, удалить папку и создать new.that раз, когда вы только один последний data.may я думаю, его помощь для вас

 response.setContentType("image/jpeg");  
 
     String path = request.getParameter("folder"); 
 
     String name = request.getParameter("filename"); 
 
     /* TODO output your page here. You may use following sample code. */ 
 
     String filepath = "Your path" + path + "/" + name, filename = name; 
 
     ServletOutputStream out = response.getOutputStream(); 
 
     FileInputStream in = new FileInputStream(filepath); 
 
     response.addHeader("content-disposition", 
 
       "attachment; filename=" + filename); 
 
     int octet; 
 
     while ((octet = in.read()) != -1) { 
 
      out.write(octet); 
 
     } 
 
     in.close(); 
 
     out.close();

+0

tnx для ответа ур. но только я должен получить доступ к новому добавленному файлу без какого-либо удаления. – user3143376