0

我正在使用PF 3.5 File Uploader 上传文件

我的上传方法如下所示:

public void handleFileUpload(FileUploadEvent event) {  
    log.info("Method handleFileUpload invoked");
    FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");  
    FacesContext.getCurrentInstance().addMessage(null, msg);  

    InputStream inputStream = null;
    OutputStream out = null;

    try {
        File targetFolder = new File("\\resources\\uploads");
        if(!targetFolder.exists()) {
            targetFolder.mkdirs();
        }

        inputStream = event.getFile().getInputstream();
        File outFile = new File(targetFolder, event.getFile().getFileName());
        log.info("copy file stream to " + outFile.getAbsolutePath());
        out = new FileOutputStream(outFile);
        int read = 0;
        byte[] bytes = new byte[size];
        log.info("read file stream");           
        while ((read = inputStream.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }

        out.flush();
    } catch (IOException e) {
        log.error(e);
    } finally {
        ...
    }

目前我的文件上传到\\resources\\uploads". 那个s the path to a folder on theC:`。

但是,我想将我的上传上传到我的 eclipse 项目中的路径。如何改变路径?真的很感谢你的回答!!!

4

1 回答 1

4

但是,我想将我的上传上传到我的 eclipse 项目中的路径。

由于此答案中提到的原因,绝对不建议这样做: Uploaded image only available after refresh the page。关键是:IDE 的工作区和服务器的部署文件夹绝对不是永久的文件存储。上传的文件将无法访问和/或像魔术一样消失。

只需将它们保存在 IDE 工作区和服务器部署文件夹之外的路径中。你做得很好。我只会通过系统属性、环境变量或属性文件设置来配置路径,这样您每次更改上传位置时都不需要编辑、重新编译、重建等代码。

如果您的具体问题更多是上传文件的服务,那么只需将上传文件夹添加为服务器配置中的另一个上下文,或者为服务作业创建一个简单的 servlet,或者当您使用 PrimeFaces 时,只需使用<p:fileDownload>或指向想要的。<p:graphicImage>StreamedContentFileInputStream

也可以看看:

于 2013-04-22T17:34:54.307 回答