Re: How to get and store uploaded file on server in JSP
Pierre wrote:
I'm trying to use this method to upload a file CSV and scan it.
In my action, the method upload.parseRequest(request) return null, but
I don't know why.
How can I put my file into the request?
What I have to do in the form?
In my jsp:
<form action="/fo-contract/importBeneficiaries.do" method="post"
name="importBeneficiariesForm" style="display: block;">
<p>
<label for="ipImportAD">Choisir le fichier ? importer</label>
<input type="file" name="file" id="ipImportAD"/>
</p>
<p class="btsBar">
<a class="btReset" id="cancelImportBt" href="javascript:void(0);"
style="display: block;">Annuler</a>
<input type="submit" class="btForm" value="Importer"/>
</p>
</form>
---------------------------------
the importBeneficiariesAction.java:
public class ImportBeneficiariesAction extends ContractAction {
private BufferedReader buff = null;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try {
/* Just a test */
final ImportBeneficiariesForm importForm =
(ImportBeneficiariesForm) form;
String filePath = importForm.getFilePath();
System.out.println(filePath);
/* End of the test */
/* Getting the upload file */
DiskFileUpload upload = new DiskFileUpload();
List<FileItem> files = upload.parseRequest(request);
InputStream uploadedStream = files.get(0).getInputStream();
buff = new BufferedReader(new
InputStreamReader(uploadedStream));
...
---------------------------------
the importBeneficiariesForm.java:
public class ImportBeneficiariesForm extends ActionForm {
private static final long serialVersionUID = -7176458272897827988L;
protected String filePath;
public ImportBeneficiariesForm() {
super();
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest
request) {
// TODO Auto-generated method stub
super.reset(mapping, request);
}
// Getters and Setters
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
}
I doubt that calling FileUpload in a Struts action will work.
The request is already read by the controller servlet and
it is not possible to read it again.
POST to a simple servlet and let that redirect back to the
Struts stuff.
Arne