Jakarta ee 使用JSF2.2和glassfish 4上传文件。找不到文件路径错误
这就是我得到的错误: java.io.FileNotFoundException:C:\Users\Owner\AppData\Roaming\NetBeans\7.3.1\config\GF3\domain1\generated\jsp\uploadRamki\data\images.jpg系统找不到指定的路径 这是我的后盾:Jakarta ee 使用JSF2.2和glassfish 4上传文件。找不到文件路径错误,jakarta-ee,netbeans,jsf-2.2,glassfish-4,Jakarta Ee,Netbeans,Jsf 2.2,Glassfish 4,这就是我得到的错误: java.io.FileNotFoundException:C:\Users\Owner\AppData\Roaming\NetBeans\7.3.1\config\GF3\domain1\generated\jsp\uploadRamki\data\images.jpg系统找不到指定的路径 这是我的后盾: package beans; import java.io.IOException; import javax.inject.Named; import javax.
package beans;
import java.io.IOException;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import javax.servlet.http.Part;
@Named(value = "demoBean")
@SessionScoped
public class DemoBean implements Serializable {
private Part file1;
public Part getFile1() {
return file1;
}
public void setFile1(Part file1) {
this.file1 = file1;
}
// getters and setters for file1 and file2
public String upload() throws IOException {
file1.write("c:/data/" + getFilename(file1));
return "success";
}
private static String getFilename(Part part) {
for (String cd : part.getHeader("content-disposition").split(";")) {
if (cd.trim().startsWith("filename")) {
String filename = cd.substring(cd.indexOf('=') + 1).trim()
.replace("\"", "");
return filename.substring(filename.lastIndexOf('/') + 1)
.substring(filename.lastIndexOf('\\') + 1); // MSIE fix.
}
}
return null;
}
}
如果您执行part.write,它将尝试在运行glassfish的临时目录中写入 尝试:
我从中得到了这段代码:除了在服务器生成的目录中存储应用程序工件通常是个坏主意之外,我看不出您在代码/configfile1.write/data/+getFilenamefile1中引用该路径的位置;这是我引用磁盘上C:/data文件中的文件夹的位置。我的目的不是将上传的图像存储在该位置,然后将图像路径存储在数据库中。这样我就可以在我的应用程序中使用它了。@Kolossus file1.writec:/data/+getFilenamefile1;听着,这里的重点是你不应该使用glassfish临时文件夹做任何事情。当您使用netbeans时,您还应该知道C驱动器中的glassfish安装文件夹与glassfish使用的文件夹不同,它将位于您的用户配置文件文件夹中,该文件夹名为.netbeans。在Netbeans文件夹的Web Pages文件夹下创建一个文件夹。你应该用这个文件夹来存储文件
InputStream input = file1.getInputStream();
FileOutputStream output = new FileOutputStream(URL_FILES + file1.getSubmittedFileName());
byte[] buf = new byte[1024];
int len;
while ((len = input.read(buf)) > 0) {
output.write(buf, 0, len);
}
input.close();
output.close();