Rinominare i file caricati

Recentemente ho caricato file PDF di presentazioni accademiche (su questo argomento riguardante, per l’appunto, le previsioni climatiche stagionali).

La convenzione di denominazione dei file che utilizzo è:

  • 0000-autoreprimario-[etal-]titolo-titolo-titolo.pdf

Fin qui tutto bene. Fino a quando non scopro che ho sbagliato il nome dell’autore principale. Ma quando provo a ricaricare lo stesso file con un nome corretto, Discourse rileva che il file è altrimenti identico — immagino ci sia qualche meccanismo di hashing in atto — e fornisce un riferimento al file originale, mantenendo il nome invariato e quindi ancora errato.

La mia soluzione temporanea è modificare la seguente impostazione in 1 (il valore predefinito è 48), rimuovere tutti i riferimenti nel markup e attendere che avvenga l’eliminazione del file risultante:

  • Impostazioni > File > periodo di grazia per la pulizia dei caricamenti orfani (ore)

Ho anche provato a impostare questo parametro specifico su 0, ma non sembra aver funzionato. In tal caso, il suggerimento (tooltip) potrebbe essere modificato per recitare: “Per disabilitare il periodo di grazia, impostare a 0”. O, in alternativa, come più opportuno: “Per attivare un effetto quasi immediato, impostare a 0”.

Non riesco a capire con quale frequenza venga effettivamente eseguita questa manutenzione, ma ipotizzo sia ogni ora? Forse è giornaliera? Anche questo sarebbe utile sapere.

Grazie in anticipo per qualsiasi aiuto su come accelerare questo processo di rinomina dei file! Ho una soluzione temporanea, ma è piuttosto goffa e lenta.

Ogni ora…

Non essendo familiare con Ruby, ma anche questo sembra che 0 significhi 1. Forse il suggerimento sul parametro dovrebbe anche recitare: “Un valore di 0 viene interpretato come 1.” o qualcosa di simile. Soprattutto perché lo zero spesso ha il significato speciale di disabilitare in altre circostanze. Grazie @neounix.

Credo che ciò che vuoi fare sia aggiornare il record di caricamento dalla console di Rails, se sei in self-hosted. Dubito che esista un modo per farlo tramite l’API, ma non ho ancora controllato.

Siamo in self-hosted. Mi è stato offerto l’accesso a un account shell, ma non ho ancora seguito l’indicazione. Grazie per il suggerimento.

Aspetta. Non sono sicuro di capire cosa stai cercando di fare. Si tratta di cambiare il nome che le persone vedono nei post in cui sono stati caricati? Se è così, forse vorresti fare qualcosa come

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

Come descritto in Sostituisci una stringa in tutti i post. Credo che, per le tue esigenze, il nome originale del file nel modello Upload non sia davvero importante.

Ma puoi modificarlo con

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

Ho provato a rigenerare un post con quel caricamento e non è successo nulla.

MODIFICA:

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

Se incolli questo codice, puoi eseguire

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

Così risolverai il problema in modo che i download abbiano il nome di file migliore.

Nella mia vita passata come accademico, avevo il mio modo specifico di nominare i miei PDF, diverso da quello di chiunque altro; sono quasi sicuro che anche mia moglie abbia il suo. Immagino che a nessuno piaceranno i tuoi nomi di file, anche quando li avrai “corretti”. :wink:

Non era quello che intendevo fare. La stringa leadauthor faceva parte del nome del file. Nient’altro. Ma quando ho modificato il nome del file (perché la mia conoscenza delle convenzioni di denominazione familiare per gli accademici spagnoli è molto limitata) e ho provato a caricare il file rinominato, Discourse ha notato che ne aveva uno identico nel proprio manifesto e ha sostituito con il file e il nome di destinazione originali. Immagino che si possa considerare una funzionalità? :roll_eyes: Solo dopo aver eliminato quel file dal database del sito sono riuscito a caricare quello con il nome corretto. Apprezzo davvero molto il tuo aiuto e il tuo interesse, @pfaffman.

Dove vedi il “nome del file”? Il nome del file effettivo nel filesystem è una stringa casuale.

Dopo aver testato nella mia istanza, puoi cambiare il nome del file in [filename.pdf|attachment](upload://filehash.pdf) e, anche se nel post viene mostrato filename.pdf, il file viene scaricato con il nome originale. Immagino che sia la stessa cosa che desidera: rinominare il nome del file utilizzato durante il download.

Non è davvero critico, ma vorrei anche poter rinominare i file caricati.

Oh. Ok. Quindi le tre righe di codice Rails fanno ciò che desideri. Non cambiano ciò che vedi nei post, ma se fai clic sul file, viene salvato con il nome “better-name.pdf”.

2 Mi Piace

Grazie a tutti coloro che hanno risposto.

1 Mi Piace

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