Umbenennen von hochgeladenen Dateien

Ich habe kürzlich PDF-Dateien von akademischen Präsentationen hochgeladen (zu diesem Thema über saisonale Klimavorhersage, wie es sich gerade ergibt).

Das von mir verwendete Dateibenennungsschema lautet:

  • 0000-leadauthor-[etal-]title-title-title.pdf

Bislang war alles in Ordnung. Bis ich feststellte, dass der Name des Erstautors falsch ist. Wenn ich jedoch versuche, dieselbe Datei unter einem korrigierten Dateinamen hochzuladen, stellt Discourse fest, dass die Datei ansonsten identisch ist – ich vermute, es findet hier eine Hash-Berechnung statt – und verweist stattdessen auf die Originaldatei, wobei der Dateiname unverändert und weiterhin falsch bleibt.

Meine Lösung besteht darin, folgende Einstellung auf 1 zu ändern (der Standardwert ist 48), alle Verweise im Markup zu entfernen und darauf zu warten, dass die resultierende Datei gelöscht wird:

  • Settings > Files > clean orphan uploads grace period hours

Ich habe auch versucht, diesen Parameter auf 0 zu setzen, aber das schien nicht zu funktionieren. In diesem Fall könnte der Tooltip besser so lauten: „Um die Gnadenfrist zu deaktivieren, auf 0 setzen.

Stündlich…

Da ich mit Ruby nicht vertraut bin, sieht es aber auch so aus, als ob 0 1 bedeutet. Vielleicht sollte der Parameter-Hinweis auch lauten: „Ein Wert von 0 wird als 1 interpretiert.

Ich denke, was du tun möchtest, ist den Upload-Eintrag in der Rails-Konsole aktualisieren, wenn du selbst gehostet bist. Ich bezweifle, dass es eine Möglichkeit gibt, das über die API zu tun, habe mich aber noch nicht damit befasst.

Wir hosten selbst. Mir wurde ein Shell-Zugang angeboten, den ich jedoch noch nicht weiter verfolgt habe. Danke für den Hinweis.

Warte. Ich bin mir nicht ganz sicher, was du genau vorhast. Geht es darum, den Namen zu ändern, den die Nutzer in den Beiträgen sehen, in denen die Dateien hochgeladen wurden? Falls ja, dann könntest du vielleicht so etwas wie

rake posts:remap["old-name.pdf","newname.pdf"]

ausführen, wie in Ersetze einen String in allen Beiträgen beschrieben. Ich denke, für deinen Zweck ist der ursprüngliche Dateiname im Upload-Modell nicht wirklich wichtig.

Aber du kannst ihn ändern mit:

u=Upload.find_by(original_filename: 'mypretty-w9.pdf')
u.original_filename='better-name.pdf'
u.save

Ich habe versucht, einen Beitrag mit diesem Upload neu zu generieren, aber es ist nichts passiert.

EDIT:

def rename_upload(old_name, new_name)
  u=Upload.find_by(original_filename: old_name)
  u.original_filename=new_name
  u.save
end

Wenn du das einfügst, kannst du dann

rename_upload('name.pdf','better-name.pdf')

ausführen. Das wird dafür sorgen, dass die Downloads den besseren Dateinamen erhalten.

In meinem früheren Leben als Wissenschaftler hatte ich meine ganz eigene Art, meine PDFs zu benennen, die sich von der aller anderen unterschied; ich bin mir ziemlich sicher, dass meine Frau ihre eigene hat. Meine Vermutung ist, dass niemand deine Dateinamen mögen wird, selbst wenn du sie „richtig

Das war nicht das, was ich erreichen wollte. Der String leadauthor war Teil des Dateinamens. Nichts weiter. Als ich jedoch den Dateinamen korrigierte (weil mein Verständnis der spanischen akademischen Familiennamenskonventionen stark begrenzt ist) und versuchte, die umbenannte Datei hochzuladen, stellte Disc fest, dass sie bereits eine identische Datei in ihrem Manifest hatte, und wechselte zum ursprünglichen Ziel und Dateinamen. Ich schätze, das könnte man als Feature betrachten? :roll_eyes: Erst nachdem ich die Datei aus der Site-Datenbank entfernt hatte, konnte ich die mit dem korrigierten Dateinamen hochladen. Ich schätze deine Hilfe und dein Interesse wirklich sehr, @pfaffman.

Wo siehst du den „Dateinamen"? Der tatsächliche Dateiname im Dateisystem ist eine zufällige Zeichenfolge.

Nach dem Testen in meiner Instanz kannst du den Dateinamen bei [filename.pdf|attachment](upload://filehash.pdf) ändern. Obwohl im Beitrag dann filename.pdf angezeigt wird, wird die Datei beim Herunterladen weiterhin unter dem ursprünglichen Dateinamen gespeichert. Ich vermute, das ist genau das, was er möchte: Den Dateinamen umbenennen, der beim Herunterladen verwendet wird.

Es ist nicht wirklich kritisch, aber ich würde auch gerne Uploads umbenennen können.

Oh. Okay. Die drei Zeilen Rails-Code machen also das, was du möchtest. Es ändert nicht, was du in den Beiträgen siehst, aber wenn du auf die Datei klickst, wird sie mit dem Namen „better-name.pdf

2 „Gefällt mir“

Vielen Dank an alle, die geantwortet haben.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.