我尝试在我的webApplication中插入下载。
首先,包含
上的表格的页面citizen/createparty.xhtml
我想上传文件的文件夹是
partysymbols/ ..
然后我向您展示XHTML代码:
<h:form enctype="multipart/form-data">
<p:fileUpload value="#{partyCreationBean.file}" mode="simple" />
<p:commandButton value="Submit" ajax="false" actionListener="#{partyCreationBean.upload}" />
然后是partyCreationBean
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
....
public void handleFileUpload() {
File target = new File(FacesContext.getCurrentInstance().getApplication().get);
System.out.println("handle file upload: " + file.getFileName());
InputStream inputStream;
try {
inputStream = file.getInputstream();
OutputStream out = new FileOutputStream(file.getFileName()
);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
inputStream.close();
out.flush();
out.close();
System.out.println("done");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void upload() {
if(file != null) {
FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
handleFileUpload();
}
}
在我的web.xml中
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>
org.primefaces.webapp.filter.FileUploadFilter
</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>51200</param-value>
</init-param>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>partysymbols</param-value>
</init-param>
</filter>
问题是我到了
的System.out.println(&#34;完成&#34)
但我不知道文件的上传位置。
然后,如果我理解了&#34; uploadDirectory&#34; web.xml中的参数不是设置文件设置的目录。
我真的不明白如何做这些事情,也因为我第一次使用web应用程序,而且我使用glassfish,我不知道文件系统应该如何工作......我的意思是......我不知道现实中的页面和所有东西......我只知道它们在日食中的位置:/
提前多多谢谢你 Samuele
答案 0 :(得分:1)
我猜你的handleFileUpload()
方法存在错误:
该行
OutputStream out = new FileOutputStream(file.getFileName());
应该是:
OutputStream out = new FileOutputStream(target.getAbsolutePath() + file.getFileName());
这也应该是文件最终存储的路径,您可以使用以下命令打印它:
System.out.println("Path: " + target.getAbsolutePath() + file.getFileName());
在您的代码中初始化target
var的行似乎错过了一些内容,但我猜它会从uploadDirectory
中检索web.xml
个参数。
您可能需要在uploadDirectory
中设置"c:\\tmp\\partysymbols"
param的绝对路径,例如"/home/user/partysymbols"
(Windows)或web.xml
(Unix)。
另见: