FileInfo
オブジェクトをパラメータとして使用するサードパーティライブラリを使用しているため、イメージをディスクに一時的に書き込む必要があるカスタムImageFilter
を作成しようとしています。私はIStorageProvider
を使ってファイルを簡単に書き込んで取得することができたが、IStorageFile
をFileInfo
に変換するか、現在のテナントのメディアフォルダへのフルパスを取得してファイルを取得する方法が見つからないようだ。Orchard MediaフォルダからFileInfoオブジェクトを取得する方法は?
public class CustomFilter: IImageFilterProvider {
public void ApplyFilter(FilterContext context)
{
if (context.Media.CanSeek)
{
context.Media.Seek(0, SeekOrigin.Begin);
}
// Save temporary image
var fileName = context.FilePath.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault();
if (!string.IsNullOrEmpty(fileName))
{
var tempFilePath = string.Format("tmp/tmp_{0}", fileName);
_storageProvider.TrySaveStream(tempFilePath, context.Media);
IStorageFile temp = _storageProvider.GetFile(tempFilePath);
FileInfo tempFile = ???
// Do all kinds of things with the temporary file
// Convert back to Stream and pass along
context.Media = tempFile.OpenRead();
}
}
}
FileSystemStorageProvider
それは彼らが公にアクセスできないことは残念ですので、メディアフォルダへのパスを構築するために重い物を持ち上げるのトンを行います。私はその初期化コードをすべてコピーする必要はありません。 Mediaフォルダ内のファイルに直接アクセスする簡単な方法はありますか?
これは私がやったことです。私はパスにテナントの名前を追加するためにいくつかのトリッキーが必要でしたが、それはかなりではありませんが、少なくとも私の目的のために動作します。 – Lawyerson