Jakarta ee 使用JSF2.2和glassfish 4上传文件。找不到文件路径错误

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.

这就是我得到的错误:

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.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();