Java 如何在heroku上创建临时文件?未解决的问题
我有一个应用程序托管在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
它具有在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));