Project

General

Profile

Feature #18499

Updated by Carsten Rose 3 months ago

h2. a) guarantee File unique filename 

 * Beim Upload ist es oft noetig das QFQ die Files 'unique' ablegt. 
 'uniq' ablegen muss.  
 * Beispiel: Ein User soll drei unterschiedliche Dokumente hochladen und er benennt alle gleich. Damit muss QFQ klar kommen. 
 * Wunsch: optional waere es gut wenn aus dem Dateinamen keine Rueckschluesse auf den Upload User geschlossen werden koennen. 

 h2. b) on download, offer orig filename. filename 

 * Wenn ein User ein Dokument hochlaedt und dann zum Test wieder herunter, erwartet er, er das der Dateiname gleich bleibt. 
 * Das ist aktuell bei der @fileDestination = fileadmin/{{id:R}}_{filename:Y}} nicht der Fall. 

 h2. Ziel 

 * Option: QFQ Developer soll sich nicht darum kuemmern das der finale Dateiname unique uniq ist, das soll QFQ selbst machen. 
 * Option: QFQ Developer soll die Moeglichkeit haben den finalen Dateinamen vorzugeben. 

 h2. Vorschlag 

 Feature: uniqueness und orig filename zusammen. 

 <pre> 
 fileDestination = fileadmin/[prefix]{{filenameUnique:V}} 
 </pre> 

 * @[prefix]@ Kann, muss aber nicht, angegeben werden. 
 * Wenn es angegeben wird, und kein '_' am Ende vorhanden ist, wird ein '_' als Trennzeichen eingesetzt. 
 * Enthaelt @[prefix]@ selbst '_', macht das nichts, es wird von rechts nach '_' gesucht. 
 * @{{filenameUnique:V}}@ ist der Original Dateiname, Base64 kodiert (ohne ((ohne extension), '/' sind durch '-' ersetzt, erweitert das er unique ist (QFQ fuegt einen Index ein falls bereits eine Datei gleichen Namens existiert). ist. Bsp: 
 <pre> 
 # Dateiname: 'hello.pdf' 
 echo "hello" | base64 | tr '/' '-' 
 aGVsbG8K 
 </pre> 
 * Dateinamen, die dazu fuehren das der BASE64 String laenger als eine Zeile ist, werden solange von hinten gekuerzt    bis der BASE64 code in eine Zeile passt. 
 * Finale Datei: @fileadmin/[prefix]_B64aGVsbG8K.pdf@ @fileadmin/[prefix]_aGVsbG8K.pdf@ 
 * Aus @{{filenameUnique:V}}@ wird @B64aGVsbG8K.pdf@, @_aGVsbG8K.pdf@, und @aGVsbG8K@ entspricht 'hello'. ist 'hello' 
 * Falls es die Datei bereits gibt: @1_B64aGVsbG8K.pdf@. @fileadmin/[prefix]_1_aGVsbG8K.pdf@. 1 wird hochgezaehlt fuer weitere Duplikate. 
 Duplikate 


 * Wird kein {{filenameUnique:V}} verwendet, Hier ist dann das uniqness Problem das vor der Ausgabe der Wert bereinigt werden muss. 

 * Soll das Feature implizit deaktiviert. mit dem Origfilename abgeschaltet werden: @fileOrigColumn = 0@ 
 * Fuer den Download: 

   * Findet der Beim Download via einem direktem HTML @<a href="fileadmin/...">@ statt, kann kein @save-as@ filename gesetzt werden. Der User speichert dann den BASE64 kodierten Dateinamen.  
   * Ist kein explizites @d:<save-as>|...@ gesetzt und SIP Download: wird erkannt das ein '|' im pathFilename vorkommt oder gibt es @_B64@ im Dateinamen, wird automatisch @<save-as>@ gesetzt (von hinten im Dateinamen nach '_B64...<.ext>' suchen und dekodieren). eine Spalte pathFileName 

Back