Umgebung ruby2.6.5 rails5.2.4 gem 'carrierwave' gem 'fog-aws'
Wenn der veröffentlichte Dateiname Japanisch enthält, ist die nachfolgende Verarbeitung schwierig. Mit gem'carrierwave 'können Sie die Datei wie offiziell angegeben umbenennen. Beginnen wir also von dort aus. In meinem Fall habe ich beschlossen, den Dateinamen als zufälliges alphanumerisches Zeichen zu speichern. Verwenden Sie beim Speichern nicht die aktuelle Zeit. Beim Ändern der Größe ist die Zeit ausgeschaltet und es tritt ein Fehler auf.
image_uploader.rb
def filename
"#{secure_token}.#{file.extension}" if original_filename.present?
end
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end
Wenn Sie auf diese Weise schreiben, wird der angegebene Dateiname in zufälligen alphanumerischen Zeichen gespeichert. Obwohl der Dateiname nur mit dem Dateinamen geändert wurde, funktionierte der Zugriff auf S3 nicht, wurde jedoch durch Hinzufügen von def secure_token behoben.
routes.rb
resources :posts do
member do
get :download
end
end
posts_controller.rb
def download
url = URI.encode(@post.image.url)
data_path = open(url)
send_data data_path.read, disposition: 'attachment',
type: @post.image_type
end
Da mein Level ein Anfängerlevel ist, denke ich, dass die Beschreibung eine Verschwendung enthält, aber bitte vergib mir.
Als der Dateiname zum ersten Mal einen japanischen Namen enthielt, war beim Hochladen nichts auszusetzen. Als ich jedoch die Download-Methode schrieb und versuchte, sie herunterzuladen, wurde 502 Zugriff verweigert angezeigt. Dieser 502 ist umständlich und ich dachte zuerst, ich hätte keinen Zugriff auf AWS, aber wenn ich ihn hochladen könnte, sollte ich Zugriff haben. Weitere Untersuchungen haben ergeben, dass 502 angezeigt wird, auch wenn die URL nicht gefunden wird. Darüber hinaus stellte sich heraus, dass die Ursache die japanische Notation war. Dies ist wahrscheinlich der Grund, warum es sich beim Herunterladen auf Image-Posting-Sites häufig um eine zufällige alphanumerische Datei handelte.
Recommended Posts