SharePoint SPFILE Cambia estensione sull'articolo esistente possibile?
-
28-10-2019 - |
Domanda
Sono alla fine del mio ingegno su questo. Ho un'interfaccia utente che crea e modifica documenti archiviati in una libreria di documenti SharePoint. La parte del trucco è che devo consentire all'utente di aggiornare il documento senza problemi SPFile.SaveBinary()
Giusto?
Ciò aggiorna sicuramente il contenuto del file, ma in qualche modo persistono il vecchio nome e la vecchia estensione, questo è un problema. L'eliminazione e la riassegnazione dell'elemento dell'elenco non è una soluzione perché l'ID dell'elemento viene fatto riferimento nell'URL.
La mia domanda è: come posso aggiornare i metadati di estensione e nome file dell'elemento SPFILE?
Finora tutti i miei tentativi di usare la libreria di oggetti sono falliti, ho provato ad aggiornare i campi sotto nessuno ha avuto successo. Sembra che ci debba essere un modo più semplice per farlo.
SPFile file = item.File;
file.Item[SPBuiltInFieldId.FileLeafRef] = resolvedFileName;
file.Item[SPBuiltInFieldId.FileRef] = "/File/" + resolvedFileName;
file.Item[SPBuiltInFieldId.BaseName] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.Item["Name"] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.SaveBinary(conduitFile);
file.Update();
MODIFICARE - Ecco la mia soluzione di lavoro.
SPFile file = item.File;
string resolvedFileName = item.ID.ToString() + "-" + conduitFileName;
item["Title"] = resolvedFileName;
file.SaveBinary(conduitFile);
file.MoveTo(item.ParentList.RootFolder.Url + "/" + resolvedFileName, true);
file.Item["Name"] = resolvedFileName;
file.Update();
Soluzione
Dopo che il file è stato salvato nella libreria, utilizzare il MoveTo
metodo e passare il nome del file modificato in newUrl
parametro.
Metodo spfile.moveto (stringa)
Facile e facile: rinominare il file caricato utilizzando il modello di oggetti SharePoint tramite un ricevitore evento
Altri suggerimenti
Un altro modo più semplice rispetto all'utilizzo di Moveto è usare il Basename Proprietà di SplistItem. Lo imposteresti correndo
item["BaseName"] = resolvedFileName; //Whatever you want the new file name to be
item.Update();
Questo è più facile di Moveto perché non devi preoccuparti della gerarchia delle cartelle e non devi preoccuparti dell'estensione del file.
Per qualche motivo la proprietà non è elencata su Documentazione MSDN, ma sembra funzionare bene senza problemi.