要不使用Rails使用Active Storage,可以使用第三方的云存储服务,如AWS S3或Google Cloud Storage。下面是一个使用AWS S3作为存储后端的示例解决方案:
首先,确保你已经安装了 aws-sdk-s3
gem:
gem 'aws-sdk-s3', require: false
然后在你的代码中,你可以使用aws-sdk-s3
gem提供的API来上传和下载文件。在下面的示例中,我们将演示如何上传和下载一个文件:
require 'aws-sdk-s3'
class S3Storage
def initialize(bucket_name)
@bucket_name = bucket_name
@s3_client = Aws::S3::Client.new(
region: 'your_aws_region',
access_key_id: 'your_aws_access_key_id',
secret_access_key: 'your_aws_secret_access_key'
)
end
def upload_file(file_path, key)
File.open(file_path, 'rb') do |file|
@s3_client.put_object(
body: file,
bucket: @bucket_name,
key: key
)
end
end
def download_file(key, file_path)
File.open(file_path, 'wb') do |file|
@s3_client.get_object(
response_target: file,
bucket: @bucket_name,
key: key
)
end
end
end
# 使用示例
s3_storage = S3Storage.new('your_bucket_name')
s3_storage.upload_file('/path/to/local/file.jpg', 'uploads/file.jpg')
s3_storage.download_file('uploads/file.jpg', '/path/to/local/downloaded_file.jpg')
在上面的示例中,我们创建了一个名为S3Storage
的类,它封装了AWS S3的API调用。在initialize
方法中,我们使用AWS提供的凭证来初始化Aws::S3::Client
。然后,我们定义了upload_file
和download_file
方法,分别用于上传和下载文件。
使用上述示例,你可以在不使用Rails的情况下,使用AWS S3作为文件存储后端。你可以根据需要调整代码以适应其他云存储服务。