我想从Kentico 8.2的文件中获取缩略图,所以我使用如下方法:
private void ThumbnailTest()
{
var siteInfo = SiteInfoProvider.GetSiteInfo(ConfigUtils.Tribes.SiteId);
MediaLibraryInfo libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(ConfigUtils.Tribes.MediaLibraryID);
string filePath = string.Format(@"D:\\Kentico\{0}\{1}\Homepage\{2}", siteInfo.SiteName, libraryInfo.LibraryFolder, "top_banner_1.jpg");
MediaFileInfo fileInfo = new MediaFileInfo(filePath, libraryInfo.LibraryID, libraryInfo.LibraryFolder); // <-- exception occurs here
var thumbnail = MediaFileInfoProvider.GetImageThumbnail(fileInfo, ConfigUtils.Tribes.MediaLibraryPath, ConfigUtils.Tribes.SiteName);
}
但在创建MediaFileInfoObject时发生异常。
System.Configuration.Provider.ProviderException:仅限方法 如果用户名参数与中的用户名匹配,则受支持 当前的Windows身份。
我使用Kentico作为远程服务器'A'上的内容平台,我想从我的localhost获取MVC应用程序的缩略图。
为什么会出现这种异常以及我做错了什么?
感谢您的建议!
更新1:
MediaFileInfo对象搜索localhost上的目录,但不搜索远程服务器上的路径,并认为这是主要问题。
我的应用程序是单独的MVC网站,需要从其他域(服务器)获取图像的缩略图。
更新2:
private void ThumbnailTest()
{
MediaLibraryInfo libraryInfo = MediaLibraryInfoProvider.GetMediaLibraryInfo(ConfigUtils.Tribes.MediaLibraryID);
var mediaFileInfo = MediaFileInfoProvider.GetMediaFileInfo(libraryInfo.LibraryID, "Homepage/top_banner_1.jpg"); // success here, file found!
var thumbnail = MediaFileInfoProvider.GetImageThumbnail(mediaFileInfo, ConfigUtils.Tribes.MediaLibraryPath, ConfigUtils.Tribes.SiteName, 300, 200, 500); // <-- null occurs here
}
我很困惑,因为根据Kentico文档方法GetImageThumbnail:
从磁盘返回图像缩略图,否则创建一个新缩略图 还存在。
我不知道为什么缩略图为空。它应该至少创建新的缩略图。我现在应该使用@ user6043336提供的解决方案吗?
答案 0 :(得分:2)
Imho你不应该像
那样创建新的MediaFileInfoMediaFileInfo fileInfo = new MediaFileInfo(filePath, libraryInfo.LibraryID, libraryInfo.LibraryFolder); // <-- exception occurs here
但您应该尝试从db或fs(取决于您的设置)获取媒体信息。尝试使用
GetMediaFileInfo(int mediaLibraryId, string mediaFilePath)
来自 MediaFileInfoProvider 类。
广告。更新2:
我检查了源代码的内部实现,只有当 fileInfo为null或者filePath上的对象不存在时才返回null 。请仔细检查一下。
答案 1 :(得分:0)
(网络部分,模块,事件等)的代码部分是什么?
无论如何,在获取缩略图之前,应该调用 SetMediaFileInfo 方法。以下是在Kentico 8.2中创建媒体文件的完整代码示例:
private bool CreateMediaFile()
{
// Prepare the parameters
string filePath = "~/CMSAPIExamples/Code/Tools/MediaLibrary/Files/Powered_by_kentico2.gif";
// Get media library
MediaLibraryInfo library = MediaLibraryInfoProvider.GetMediaLibraryInfo("MyNewLibrary", SiteContext.CurrentSiteName);
if (library != null)
{
// Create new media file object
MediaFileInfo mediaFile = new MediaFileInfo(Server.MapPath(filePath), library.LibraryID);
// Create file info
FileInfo file = FileInfo.New(Server.MapPath(filePath));
if (file != null)
{
// Set the properties
mediaFile.FileName = "MyNewFile";
mediaFile.FileTitle = "My new file title";
mediaFile.FileDescription = "My new file description.";
mediaFile.FilePath = "MyNewFolder/MyNewFile.gif";
mediaFile.FileExtension = file.Extension;
mediaFile.FileMimeType = "image/gif";
mediaFile.FileSiteID = SiteContext.CurrentSiteID;
mediaFile.FileLibraryID = library.LibraryID;
mediaFile.FileSize = file.Length;
// Create the media file
MediaFileInfoProvider.SetMediaFileInfo(mediaFile);
return true;
}
}
return false;
}