Link to home
Start Free TrialLog in
Avatar of shragi
shragiFlag for India

asked on

extract path

it is a continuation to my previous question folder structure

content_folder
    -> old_folder
         ->file1.xml
         ->file2.xml
    -> new_folder
         ->file3.xml
         ->file4.xml

by using below code if i select...
file1.txt

the code opens the file instead how to select that file...

i need to know from server side in method loadFileName what file is selected....

I think
request.getAttribute("selectedFolder");

just tells me what folder is selected but not the file selected..

i want the file selected... so that i can parse that file.... on server side to get the values....



<%@ page import="java.io.File" %>
<%
   String appPath = application.getRealPath("/");
   int appPathLength = appPath.length();
   String folderPath = request.getParameter("selectedFolder");
   if(folderPath == null || "Please make a selection or go back to app root folder".equals(folderPath)){
         folderPath = appPath;
   }
   File folder = new File(folderPath);
   String requestURL = request.getRequestURL().toString();
   String servletPath = request.getServletPath();
   String appURL = requestURL.substring(0, requestURL.indexOf(servletPath));
%>
<html>
<body>
<form method ="post">
<select name="selectedFolder" >
          <option value="Please make a selection or go back to app root folder" >
                    Please make a selection or go back to app root folder
          </option>
<%
   File[] folderList = folder.listFiles();
   for(File f : folderList){
       if(f.isDirectory() && !f.getName().endsWith("WEB-INF")){
              String path = f.getPath();
              String name = f.getName();
              out.print("<option value=\"" + path + "\">" + name + "</option>");
       }
   } 
%>
</select>
<input type="submit" value="Browse folder" />
<input class="button" value="Submit" type="button" onclick="performAction()" />

</form>
Selected folder path is <%=folderPath%><br/>
<%
       File[] files = folder.listFiles();
       String foldersPath = folderPath.substring(appPathLength);
       foldersPath = foldersPath.replaceAll("[\\\\]","/");
       for(File file : files){
          if(!file.isDirectory()){
           out.print("<a href=\"" + appURL + "/" + foldersPath + "/" 
                     + file.getName() + "\">" + file.getName() + "</a><br/>");
          }
       }
%>
</body>
<script language="JavaScript" type="text/javascript">
	function performAction() {
		document.forms[0].action = "formsData.po?method=loadFileName";
		document.forms[0].submit();
	}
	
	
</script>
</html>

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of rrz
rrz
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of shragi

ASKER

tree would be gud... becoz here ... the customer cannot distinguish between folder and file...

and as you suggested... in the other thread... session did not work...

it returned null value...
>tree would be gud... becoz here ... the customer cannot distinguish between folder and file...  
Only files are listed. The problem is that they all strung together. If we go with a tree, then we have to decide how it should look.  
Do you want the customer to be able to select only files and not folders ?
Avatar of shragi

ASKER

yup they should select only files not folders..
Try this demo JSP. Just copy and paste. If you like that look, then we change it to your code.
<%@ page import="java.io.File,java.util.*" %>
<%!
  ArrayList<File> folderList = new ArrayList<File>();
  public void listFolders(File folder){
          File[] array = folder.listFiles();
          for(File f : array){
               if(f.isDirectory() && !f.getName().endsWith("WEB-INF")){
                    folderList.add(f);
                    listFolders(f);
               }
               if(!f.isDirectory())folderList.add(f);
          }
  }
%>
<%
   String appPath = application.getRealPath("/");
   File appFolder = new File(appPath);
   folderList.clear();
   listFolders(appFolder);
   String selectedPath = request.getParameter("selectedFile");
   if(selectedPath == null || "Please make a selection".equals(selectedPath))selectedPath = "not selected";
%>
<html>
<body>
<form>
<select name="selectedFile" >
  <option value="Please make a selection" >Please make a selection</option>
<%
   
   for(File f : folderList){
         String name = f.getName();
         if(f.isDirectory()){
              out.print("<option disabled=\"disabled\">" + name + "</option>");
         } else {
                   String path = f.getPath();
                   out.print("<option value=\"" + path + "\">-->  " + name + "</option>");
                }
   } 
%>
</select>
<input type="submit" value="Select a file"/>
</form>
Selected folder path is <%=selectedPath%>
</body>
</html>

Open in new window

Avatar of shragi

ASKER

yup that looks gud....
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of shragi

ASKER

how about using hidden fields in jsp and
calling them in servlet using

form.getparameter(hiddenfield)

but i dont know how to use hidden fields...

can u help me with that...

how to create hidden field in jsp and how to call them in servlet
Good idea! You may have found our problem. We were appending to query string and then using the post method to send the form. I am sorry that I didn't notice that before now. I responded to your other question and gave you  the javascript code there.
By the way the getParameter method returns a String so no casting is necessary.
>String selectedvalue = (String)request.getParameter("hidden");
you can use

String selectedvalue = request.getParameter("hidden");
Thanks for the points. Sorry I didn't see that problem earlier. I was so focused on the JSP that I didn't think about the HTML or javascript.