Renommer les fichiers téléchargés

J’ai récemment commencé à télécharger des fichiers PDF de présentations académiques (vers ce sujet sur les prévisions climatiques saisonnières, par hasard).

La convention de nommage des fichiers que j’utilise est la suivante :

  • 0000-auteurprincipal-[etal-]titre-titre-titre.pdf

Jusqu’ici, tout va bien. Jusqu’à ce que je découvre que le nom de l’auteur principal est incorrect. Mais lorsque j’essaie de télécharger le même fichier sous un nom corrigé, Discourse remarque que le fichier est par ailleurs identique — je suppose qu’il y a un hachage en jeu ici — et fournit une référence au fichier original, avec le nom de fichier inchangé et toujours incorrect.

Ma solution de contournement consiste à modifier le paramètre suivant à 1 (la valeur par défaut est 48), à supprimer toutes les références dans le code source, et à attendre que le processus de suppression des fichiers résultants ait lieu :

  • Paramètres > Fichiers > Période de grâce pour le nettoyage des téléchargements orphelins (heures)

J’ai également essayé de définir ce paramètre spécifique à 0, mais cela ne semblait pas fonctionner. Dans ce cas, l’info-bulle pourrait être modifiée pour indiquer : « Pour désactiver la période de grâce, définissez à 0 ». Ou alternativement, selon le cas : « Pour activer un effet quasi immédiat, définissez à 0 ».

Je ne sais pas à quelle fréquence ce type de maintenance est réellement exécuté, mais je supposais qu’il s’agissait d’une exécution horaire ? Peut-être est-ce quotidien ? Ce serait utile de le savoir aussi.

Merci d’avance pour toute aide concernant la façon d’accélérer ce processus de renommage de fichiers ! J’ai bien une solution de contournement, mais elle est plutôt maladroite et lente.

Toutes les heures…

N’étant pas familier avec Ruby, mais cela ressemble aussi à ce que 0 signifie 1. Peut-être que l’astuce du paramètre devrait aussi indiquer : « Une valeur de 0 est interprétée comme 1. » ou quelque chose de similaire. Surtout que zéro a souvent la signification spéciale de désactiver dans d’autres contextes. Merci @neounix.

Je pense que ce que vous voulez faire, c’est mettre à jour l’enregistrement du téléchargement via la console Rails, si vous êtes en auto-hébergement. Je doute qu’il existe un moyen de le faire avec l’API, mais je n’ai pas vérifié.

Nous sommes en auto-hébergement. On m’a proposé un accès à un compte shell, mais je n’ai pas donné suite. Merci pour l’indice.

Attendez. Je ne suis pas tout à fait sûr de ce que vous essayez de faire. S’agit-il de changer le nom que les gens voient dans les publications où ils sont téléchargés ? Si c’est le cas, vous voudrez peut-être faire quelque chose comme :

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

Comme décrit dans Remplacer une chaîne dans toutes les publications. Je pense que, pour votre usage, le nom de fichier original dans le modèle Upload n’a pas vraiment d’importance.

Mais vous pouvez le modifier avec :

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

J’ai essayé de régénérer une publication avec ce téléchargement, mais rien ne s’est produit.

EDIT :

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

Si vous collez cela, vous pouvez ensuite exécuter :

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

Cela corrigera le problème afin que les téléchargements portent le meilleur nom de fichier.

Dans ma vie antérieure d’universitaire, j’avais ma propre méthode spécifique pour nommer mes PDF, différente de celle de tout le monde ; je suis presque certain que ma femme a la sienne. Je parie que personne n’aimera vos noms de fichier, même lorsque vous les aurez « correctement » définis. :wink:

Ce n’est pas ce que je tentais de faire. La chaîne leadauthor faisait partie du nom de fichier, rien de plus. Mais lorsque j’ai modifié le nom de fichier (car ma compréhension des conventions de nommage familial pour les universitaires espagnols est très limitée) et que j’ai essayé de télécharger le fichier renommé, Discourse a remarqué qu’il existait un fichier identique dans son manifeste et est passé au nom de fichier et au nom de cible d’origine. Je suppose que cela pourrait être considéré comme une fonctionnalité ? :roll_eyes: Ce n’est qu’après avoir purgé ce fichier de la base de données du site que j’ai pu télécharger celui avec le nom de fichier corrigé. J’apprécie vraiment votre aide et votre intérêt, @pfaffman.

Où voyez-vous le « nom de fichier » ? Le vrai nom de fichier dans le système de fichiers est une chaîne aléatoire.

Après avoir testé dans mon instance, vous pouvez modifier le nom du fichier sur [filename.pdf|attachment](upload://filehash.pdf). Bien que le nom du fichier s’affiche ainsi dans le message, le téléchargement se fait toujours avec le nom d’origine. Je suppose que c’est la même chose que ce qu’il souhaite : renommer le nom du fichier utilisé lors du téléchargement.

Ce n’est pas vraiment critique, mais j’aimerais également pouvoir renommer les fichiers uploadés.

Oh. D’accord. Donc les trois lignes de code Rails font ce que vous voulez. Cela ne modifie pas ce que vous voyez dans les publications, mais si vous cliquez sur le fichier, il est enregistré avec le nom “better-name.pdf”.

2 « J'aime »

Merci à tous ceux qui ont répondu.

1 « J'aime »

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