当前位置: 首页 > 知识库问答 >
问题:

无法将上载的文件保存到特定目录

梁烨烨
2023-03-14

我想上传文件并保存到特定的目录。而且我对文件的概念是陌生的。当我从我的页面上传文件时,它们保存在另一个目录(C:\ Users \ ROOTCP ~ 1 \ AppData \ Local \ Temp \ multipartbody 989135345617811478 astemporary file)而不是指定的目录。我不能设置它。请帮我找到解决办法。提前感谢所有的帮助。

  public static Result uploadHoFormsByHeadOffice() throws Exception {

    Logger.info("@C HoForms -->> uploadHoFormsByHeadOffice() -->> ");
    final String  basePath = System.getenv("INVOICE_HOME");

    play.mvc.Http.MultipartFormData body = request().body()
            .asMultipartFormData(); // get Form Body

    StringBuffer fileNameString = new StringBuffer(); // to save file path
                                                        // in DB
    String formType = body.asFormUrlEncoded().get("formType")[0];// get formType from select Box
    FilePart upFile = body.getFile("hoFiles");//get the file details
    String fileName = upFile.getFilename();//get the file name
    String contentType = upFile.getContentType(); 
    File file = upFile.getFile();

    //fileName = StringUtils.substringAfterLast(fileName, ".");

    // path to Upload Files
    File ftemp= new File(basePath +"HeadOfficeForms\\"+formType+"");

    //File ftemp = new File(basePath + "//HeadOfficeForms//" + formType); 
    File f1 = new File(ftemp.getAbsolutePath());// play

    ftemp.mkdirs();
     file.setWritable(true);
     file.setReadable(true);
     f1.setWritable(true);
     f1.setReadable(true);
     //HoForm.create(fileName, new Date(), formType); 

    Logger.info("@C HoForms -->> uploadHoFormsByHeadOffice() <<-- Redirecting to Upload Page for Head Office");
    return redirect(routes.HoForms.showHoFormUploadPage());
}

}

上传的文件为什么保存在这个(C:\ Users \ ROOTCP ~ 1 \ AppData \ Local \ Temp \ multipartbody 989135345617811478 astemporaryfile)路径,我真的很困惑。

共有2个答案

颛孙正卿
2023-03-14

我相信当文件上传时,它会以您提供的名称存储在系统临时文件夹中。您可以将该文件复制到您喜欢的名称和位置。在您的代码中,您正在创建File对象f1,它似乎是您希望文件最终到达的位置。

您需要进行文件复制,将文件从临时文件夹复制到所需的文件夹。最简单的方法可能是使用apache commons FileUtils类。

File fileDest = new File(f1, "myDestFileName.txt");
try {
  FileUtils.copyFile(ftemp, fileDest);
}
catch(Exception ex) {
  ...
}
狄峻熙
2023-03-14

你快到了。

< code > File File = upfile . getfile();是通过表单输入获得的临时文件。您所要做的就是像这样将这个文件移动到您想要的位置:< code > file . rename to(ftemp)。

代码中的问题是,您在内存ftempf1中创建了一堆文件,但您从来没有对它们做过任何操作(比如将它们写入磁盘)。

另外,我建议您清理代码。其中很多都不起作用(前面提到的f1,也是你正在做setWable的块)。这将使调试变得更加容易。

 类似资料:
  • 我尝试用以下代码保存从internet下载的文件 但在运行时,我得到的错误如下 03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e

  • 问题内容: 我有以下代码可以处理服务器上的文件上传。但是如何将文件保存到服务器上的特定位置 问题答案: 您应该使用which代替一个目录。 或者,如果你真的想临时文件移动到另一个位置 之后 ,使用。

  • 我正试图上传一个文件到我的谷歌硬盘,下面的代码工作。如何指定要上载到哪个文件夹,即驱动器--shared with me--csvFolder

  • 问题内容: 我正在尝试使用HttpClient下载PDF文件。我可以获取文件,但是我不确定如何将字节转换为PDF并将其存储在系统中的某个位置 我有以下代码,如何将其存储为PDF? 问题答案: 编辑: 您还可以使用BufferedOutputStream和BufferedInputStream来加快下载速度:

  • 在shell脚本中,我想从某个URL下载一个文件,并将其保存到特定的文件夹中。使用命令将文件下载到特定文件夹时应使用的特定CLI标志是什么,或者如何获得该结果?