如何向 ruby​​ Tempfile 对象添加扩展名?

Ahm*_*lah 5 ruby file temporary-files

如何为Tempfile对象添加扩展名?

image_path = "https://api.tinify.com/output/g85retpckb5fz2x8zpjrvtj0jcv1txm0"
image = open(image_path)
image.path # "/tmp/open-uri20191225-21585-oo95rb"
Run Code Online (Sandbox Code Playgroud)

现在我想让这个文件具有jpg扩展名,我该怎么做?

我也尝试将其转换为File类,但也无法更改扩展名。

new_image = File.new(image)
new_image.path # "/tmp/open-uri20191225-21585-oo95rb"
Run Code Online (Sandbox Code Playgroud)

xxj*_*jnn 12

如果您自己创建临时文件,您可以这样做

>> Tempfile.new([ 'foobar', '.xlsx' ]).path
=> "/tmp/foobar20130115-19153-1xhbncb-0.xlsx"
Run Code Online (Sandbox Code Playgroud)


Ale*_*kin 1

用于FileUtils#mv在文件系统上物理移动文件。

image_path = "https://api.tinify.com/output/g85retpckb5fz2x8zpjrvtj0jcv1txm0"
image = open(image_path)
image.path # "/tmp/open-uri20191225-21585-oo95rb"

image_path_jpg = "#{image.path}.jpg"
FileUtils.mv(image.path, image_path_jpg)
image = open(image_path_jpg)
image.path # "/tmp/open-uri20191225-21585-oo95rb.jpg"
Run Code Online (Sandbox Code Playgroud)

请注意,您现在负责文件删除,因为该文件不再是临时文件。