/    Sign up×
Community /Pin to ProfileBookmark

file upload to java filter

hello
we are building a site, in which we want to enable for the user to upload pictures from an html form to a java filter.
the form is as follows:

<html>
<body>
<FORM action=”http://idanlavi.s43.eatj.com/ct/upload
enctype=”multipart/form-data”
method=”post”>
<P>
What files are you sending? <INPUT type=”file” name=”files”><BR>
<INPUT type=”submit” value=”Save”> <INPUT type=”reset”>
</FORM>
</body>
</html>

the filter code is:

package upload;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import misc.*;

public class UploadMultipartFilter implements Filter{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
response.setContentType(“text/html”);
out.println(“hello world”);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {

HttpServletRequest hRequest = (HttpServletRequest)request;

//Check whether we’re dealing with a multipart request
boolean isMultipart = (hRequest.getHeader(“content-type”) != null &&
hRequest.getHeader(“content-type”).indexOf(“multipart/form-data”) != -1);

Logger.printlnToDebugLog(“###############” + “is multi part = ” + isMultipart + “###############”);
if(isMultipart == false){
chain.doFilter(request,response);
}else{
//We’re dealing with a multipart request – we have to wrap the request.
UploadMultipartRequestWrapper wrapper = new UploadMultipartRequestWrapper(hRequest);
Logger.printlnToDebugLog(“###############” + “wrapper = ” + wrapper.getFile(“sample.war”) + “###############”);
chain.doFilter(wrapper,response);
}
}

public void destroy() {}
public void init(FilterConfig config) throws ServletException {}

}

package upload;

import java.io.File;
import java.io.PrintWriter;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import misc.Logger;

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;

public class UploadMultipartRequestWrapper extends HttpServletRequestWrapper{

private Map<String,String> formParameters;
private Map<String,FileItem> fileParameters;

public UploadMultipartRequestWrapper(HttpServletRequest request) {
super(request);
try{
Logger.printlnToDebugLog(“in c’tor UploadMultipartRequestWrapper”);
ServletFileUpload upload = new ServletFileUpload();
upload.setFileItemFactory(new DiskFileItemFactory());
Logger.printlnToDebugLog(“in c’tor UploadMultipartRequestWrapper”);
List fileItems = upload.parseRequest(request);
formParameters = new HashMap<String,String>();
fileParameters = new HashMap<String,FileItem>();

Logger.printlnToDebugLog(“in c’tor UploadMultipartRequestWrapper”);

for(int i=0;i<fileItems.size();i++){
FileItem item = (FileItem)fileItems.get(i);

if(item.isFormField() == true){
formParameters.put(item.getFieldName(),item.getString());
Logger.printlnToDebugLog(formParameters.toString());
}else{
fileParameters.put(item.getFieldName(),item);
request.setAttribute(item.getFieldName(),item);
File cfile=new File(item.getName());
File tosave=new File(“//” ,cfile.getName());
item.write(tosave);
Logger.printlnToDebugLog(fileParameters.toString());
}

}

}/*catch(FileUploadException fe){
fe.printStackTrace();
Logger.printlnToDebugLog(“file upload exception”);
}*/catch(Exception ne){
ne.printStackTrace();
Logger.printlnToDebugLog(“exception: ” + ne);
throw new RuntimeException(ne);
}
}

public String getParameter(String name) {
if(formParameters.get(name) != null){
return formParameters.get(name);
}
if(fileParameters.get(name) != null){
return “file”;
}
return null;
}

public Enumeration getFileNames(){
return Collections.enumeration(fileParameters.keySet());
}

public FileItem getFile(String name){
return fileParameters.get(name);
}

public Map getParameterMap() {
return formParameters;
}

public Enumeration getParameterNames() {
return Collections.enumeration(formParameters.keySet());
}

public String[] getParameterValues(String arg0) {
String[] values = new String[formParameters.size()];
Iterator<String> iter = formParameters.values().iterator();
for(int i=0;i<values.length;i++){
values[i] = iter.next();
}

return values;
}

}

we are using a tomcat server ( at [url]http://s43.eatj.com/)[/url].
when attemping to upload we get the following error:

HTTP Status 500 –


——————————————————————————–

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.RuntimeException: java.io.FileNotFoundException: /E:test.gif (Permission denied)
upload.UploadMultipartRequestWrapper.<init>(UploadMultipartRequestWrapper.java:64)
upload.UploadMultipartFilter.doFilter(UploadMultipartFilter.java:38)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.


——————————————————————————–

Apache Tomcat/5.5.9

I am uploading from windows xp, the error occures both in IE 6 and firefox 1.5.

I also checked several files, none of which have special permissions.
what can we do?

Thank you

to post a comment
Java

0Be the first to comment 😎

×

Success!

Help @Idan spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.18,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...