正如標題所示,我試圖從Web上傳文件到我的Sitecore樹中的某個地方,並且希望將該文件的擴展名保留在該項目的DisplayName中。將文件上傳到Sitecore,在DisplayName中保留擴展名
我試過使用MediaCreator,但它需要一個特定的文件路徑,我不知道什麼時候讓人們使用asp選擇一個文件:FileUpload。所以這不好。
我現在使用asp:FileUpload與流水線結合使用。當我使用Sitecore.Kernel中的Sitecore.Pipelines.Upload.Save時,它將工作,除了它從DisplayName中刪除文件的擴展名。所以,我創建了一個自定義管道的方法,看起來像這樣:
using System;
using System.IO;
using Sitecore.Diagnostics;
using Sitecore.IO;
namespace Sitecore.Pipelines.Upload
{
public class CustomSave
{
public void Process(UploadArgs args)
{
foreach (string key in args.Files)
{
var file = args.Files[key];
if (file != null && file.FileName.Length > 0 && file.ContentLength > 0)
{
var filename = FileUtil.MakePath(args.Folder, Path.GetFileName(file.FileName), '/');
try
{
if (!args.Overwrite)
{
filename = FileUtil.GetUniqueFilename(filename);
}
file.SaveAs(filename);
EventDispatcher.DispatchTrace("File has been uploaded: " + filename);
}
catch (Exception ex)
{
Log.Error("Could not save posted file: " + filename, ex, this);
}
}
}
}
}
}
我現在面臨的問題是,它正試圖保存到我的C:\盤而不是Sitecore的數據庫。
關於如何寫入正確目的地的任何建議?
如上所述,最終目標是使用客戶端友好的asp:FileUpload來選擇文件並將其上載到Sitecore中的特定路徑,從而在其DisplayName中保留該文件的擴展名。如果你有另一種方式做,我也想聽到。
我不能使用媒體,因爲它需要我沒有的文件路徑。我正在考慮的另一個想法。我感到困惑,試圖改變Item.DisplayName但它沒有setter。變成Item.Name作品。謝謝。 –
如果您使用Item.Name來添加擴展名,那麼只需使用該設置即可。它會自動爲你做。 – ishara