1
我正在構建一個管理訂閱和生成郵件列表的應用程序。發送帶Sinatra附件方法不起作用的zip文件
我在我的應用程序中構建了一個功能,將每個訂閱下的所有郵件列表導出爲多個csv。這會生成一個包含所有csv的zip文件。然後,我使用Sinatra中的附件方法將文件發送給用戶。
但是,每當我這樣做時,用戶都會得到一個小於1KB的zip文件,但沒有任何數據 - 但是當我查看服務器上的文件時,zip文件就在那裏,它包含所有數據在裏面。
任何想法爲什麼用戶下載的附件沒有任何數據?
代碼我用來創建和zip文件發送給用戶:
require 'zip'
get '/all' do
zip_name = 'all_mailing_lists.zip'
File.delete(zip_name) if File.exists?(zip_name) # Delete previous version if it exists
# Get a list of all csv files alrady created and delete them
Dir.glob("./exports/*.csv") do |filepath|
File.delete(filepath) if File.exists?(filepath)
end
subscriptions = Subscription.all # Get all subscriptions into an array
# Iterate through all subscriptions and export to csv
subscriptions.each do |subscription|
export = ExportCsv.new
mailing_list = export.export_mailing_list(subscription)
# Create the csv
File.open("./exports/#{subscription.name}_mailing_list.csv", 'w+') do |file|
file << mailing_list.to_s
end
end
# Zip all csv files
Zip::File.open(zip_name, Zip::File::CREATE) do |zipfile|
# Find all .csv files in the exports directory
Dir.glob("./exports/*.csv") do |filepath|
filename = filepath.split("/").pop
zipfile.add(filename, filepath)
end
end
# Download zip file
attachment("./all_mailing_lists.zip")
File.read("./all_mailing_lists.zip")
end
提前感謝!