如何在 heroku 上制作临时文件?未解决的问题
How do I make a temporary file on heroku? Not resolved problem
我在 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 );
我根据Whosebug上的问题把所有的问题都过了
但我没有得到有效的答案
我没有在 heroku 上添加任何附加组件而不是日志记录。
这是该问题的日志:
Oct 08 01:53:04.527pm info app web.1 200 PORT command successful (xxx.xx.xx.xxx:xxxxx).
Oct 08 01:53:04.528pm info app web.1 STOR 1602157983845A2.jpg
Oct 08 01:53:04.636pm info app web.1 150 Opening BINARY mode data connection for '1602157983845A2.jpg'.
Oct 08 01:53:33.706pm error heroku router req=0a0bbc10… at=error code=H12 desc="Request timeout"
method=POST path="/add-graphic" host=xxxxxxx.herokuapp.com request_id=xxxxxxxx-xxxx-xxxx-xxxx-
xxxxxxxxxxxx fwd="xx.xxx.xx.xxx" dyno=web.1 connect=0ms service=30889ms status=503 bytes=0
protocol=https
在对问题进行更多研究后,
似乎 heroku dyno 停留在那条线上:
ftp.putFileToPath(tempFile , fileName);
方法 putFileToPath 看起来像这样:
public void putFileToPath(File file, String path) throws IOException {
ftp.storeFile(path, new FileInputStream(file));
}
添加
ftp.enterLocalPassiveMode()
之前
ftp.storeFile(path, new FileInputStream(file));
背景:FTP timing out on Heroku
我在 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 );
我根据Whosebug上的问题把所有的问题都过了
但我没有得到有效的答案
我没有在 heroku 上添加任何附加组件而不是日志记录。
这是该问题的日志:
Oct 08 01:53:04.527pm info app web.1 200 PORT command successful (xxx.xx.xx.xxx:xxxxx).
Oct 08 01:53:04.528pm info app web.1 STOR 1602157983845A2.jpg
Oct 08 01:53:04.636pm info app web.1 150 Opening BINARY mode data connection for '1602157983845A2.jpg'.
Oct 08 01:53:33.706pm error heroku router req=0a0bbc10… at=error code=H12 desc="Request timeout" method=POST path="/add-graphic" host=xxxxxxx.herokuapp.com request_id=xxxxxxxx-xxxx-xxxx-xxxx- xxxxxxxxxxxx fwd="xx.xxx.xx.xxx" dyno=web.1 connect=0ms service=30889ms status=503 bytes=0 protocol=https
在对问题进行更多研究后,
似乎 heroku dyno 停留在那条线上:
ftp.putFileToPath(tempFile , fileName);
方法 putFileToPath 看起来像这样:
public void putFileToPath(File file, String path) throws IOException {
ftp.storeFile(path, new FileInputStream(file));
}
添加
ftp.enterLocalPassiveMode()
之前
ftp.storeFile(path, new FileInputStream(file));
背景:FTP timing out on Heroku