Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在heroku上创建临时文件?未解决的问题_Java_Spring Boot_Heroku_Ftp_File Transfer - Fatal编程技术网

Java 如何在heroku上创建临时文件?未解决的问题

Java 如何在heroku上创建临时文件?未解决的问题,java,spring-boot,heroku,ftp,file-transfer,Java,Spring Boot,Heroku,Ftp,File Transfer,我有一个应用程序托管在Heroku上。 它具有在ftp服务器上上载文件的简单功能。 在本地,它可以完美地工作, 但我对部署在heroku上的同一个应用程序有一个问题。 试图保存文件时会抛出错误。 实际上它也保存了它,但是文件大小是0字节 下面是代码: public boolean fileUpload(MultipartFile file, String fileName) { try { FtpClient ftp = new FtpClient(ftpHost

我有一个应用程序托管在Heroku上。
它具有在ftp服务器上上载文件的简单功能。
在本地,它可以完美地工作,
但我对部署在heroku上的同一个应用程序有一个问题。
试图保存文件时会抛出错误。

实际上它也保存了它,但是文件大小是0字节
下面是代码:

    public boolean fileUpload(MultipartFile file, String fileName) {
    try {
        FtpClient ftp = new FtpClient(ftpHost, ftpPort, ftpUser, ftpPassword);
        ftp.open();

        File tempFile = File.createTempFile(System.currentTimeMillis() + "tmp", "jpg");
        file.transferTo(tempFile );
        ftp.putFileToPath(tempFile , fileName);
        ftp.close();
        return true;
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}
我认为问题在于这一行:

File tempFile = File.createTempFile(System.currentTimeMillis() + "tmp", "jpg");
        file.transferTo(tempFile );
根据StackOverflow上的问题,我已通过了所有问题
但是我没有得到有效的答案

我不会在heroku上添加任何附加组件,而是登录。

以下是该问题的日志:

10月8日01:53:04.527pm信息应用程序web.1200端口命令成功(xxx.xx.xx.xxx:xxxxx)

10月8日01:53:04.528下午信息应用程序web.1 STOR 1602157983845A2.jpg

10月8日01:53:04.636pm信息应用程序web.1150正在打开“1602157983845A2.jpg”的二进制模式数据连接

10月8日01:53:33.706pm错误heroku路由器请求=0a0bbc10…at=错误代码=H12 desc=“请求超时” method=POST path=“/add graphic”host=xxxxxxx.herokuapp.com请求\u id=xxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxx fwd=“xx.xxx.xx.xxx”dyno=web.1 connect=0ms服务=30889ms状态=503字节=0 协议=https

在对这个问题进行进一步研究之后,
似乎heroku dyno在这句话上说:

ftp.putFileToPath(tempFile , fileName);
Method putFileToPath如下所示:

public void putFileToPath(File file, String path) throws IOException {
    ftp.storeFile(path, new FileInputStream(file));
}

以前

ftp.storeFile(path, new FileInputStream(file));

背景:

日志清楚地显示,上传文件时有一个请求超时。Heroku的默认超时时间为30秒。你试图上传的文件有多大?我甚至尝试了一个43kb的文件,然后我会建议你从方法体中删除所有代码,并逐行添加回去,看看是什么让你的heroku dyno冻结。我照你说的做了,它似乎在tat方法上卡住了:ftp.putFileToPath(tempFile,fileName);您正在使用哪个ftp客户端?
ftp.storeFile(path, new FileInputStream(file));