Commit dd8be2d5 by wangonghui

媒体库资源开发

parent fae98791
......@@ -38,7 +38,7 @@ namespace VIZ.TVP.Domain
/// <summary>
/// 文件集合
/// </summary>
public ObservableCollection<GHResourceFileModel> Files
public ObservableCollection<GHResourceFileModel> Files
{
get { return files; }
set { files = value; this.RaisePropertyChanged(nameof(Files)); }
......
......@@ -56,7 +56,7 @@ namespace VIZ.TVP.Module
{
foreach (var fileModel in folder.Files)
{
if (IsImage(fileModel.Path))
if (ThumbnailHelper.IsImage(fileModel.Path))
{
// D:\世界杯单独项目\竖屏世界杯包装效果\VAR团队名单.jpg
......@@ -72,7 +72,7 @@ namespace VIZ.TVP.Module
});
}
else if (IsVideo(fileModel.Path))
else if (ThumbnailHelper.IsVideo(fileModel.Path))
{
string strVedioPath = string.Format("{0}{1}", System.Environment.CurrentDirectory, "\\VedioImage\\Vedio.jpeg");
......@@ -94,92 +94,7 @@ namespace VIZ.TVP.Module
}
#region ---图片文件检测
private Boolean IsImage(string path)
{
try
{
if (IsImageByName(path))
{
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
return true;
}
return false;
}
catch (Exception e)
{
return false;
}
}
private Boolean IsImageByName(string name)
{
int pos = name.LastIndexOf(".");
if (name.Length - pos - 1 < 3)
return false;
string ext = name.Substring(pos + 1, name.Length - pos - 1);
string[] imge = { "jpg", "jpeg", "png", "gif", "bmp", "TIFF", "tif" };
return IsInIgnoreCase(ext, imge);
}
private bool IsInIgnoreCase(string source, params string[] list)
{
if (null == source) return false;
IEnumerable<string> en = list.Where(i => string.Compare(i, source, StringComparison.OrdinalIgnoreCase) == 0);
return en.Count() == 0 ? false : true;
}
/// <summary>
/// 读取图片文件
/// </summary>
/// <param name="path">图片文件路径</param>
/// <returns>图片文件</returns>
private Bitmap ReadImageFile(String path)
{
Bitmap bitmap = null;
try
{
FileStream fileStream = File.OpenRead(path);
Int32 filelength = 0;
filelength = (int)fileStream.Length;
Byte[] image = new Byte[filelength];
fileStream.Read(image, 0, filelength);
System.Drawing.Image result = System.Drawing.Image.FromStream(fileStream);
fileStream.Close();
bitmap = new Bitmap(result);
}
catch (Exception ex)
{
// 异常输出
}
return bitmap;
}
private bool IsVideo(string filePath)
{
bool isVideo = false;
string fileName = filePath;
IList<string> formateList = new List<string> {
"avi","flv","mpg","mpeg","mpe","m1v","m2v","mpv2","mp2v","dat","ts","tp","tpr","pva","pss","mp4","m4v",
"m4p","m4b","3gp","3gpp","3g2","3gp2","ogg","mov","qt","amr","rm","ram","rmvb","rpm"};
string[] Namesuffix = fileName.Split('.');
if(Namesuffix.Length>1)
{
if (formateList.Contains(Namesuffix[1]))
{
isVideo = true;
}
}
return isVideo;
}
#endregion
/// <summary>
......
......@@ -70,5 +70,99 @@ namespace VIZ.TVP.Module
}
}
#region ---图片文件检测
public static Boolean IsImage(string path)
{
try
{
if (IsImageByName(path))
{
System.Drawing.Image img = System.Drawing.Image.FromFile(path);
return true;
}
return false;
}
catch (Exception e)
{
return false;
}
}
private static Boolean IsImageByName(string name)
{
int pos = name.LastIndexOf(".");
if (name.Length - pos - 1 < 3)
return false;
string ext = name.Substring(pos + 1, name.Length - pos - 1);
string[] imge = { "jpg", "jpeg", "png", "gif", "bmp", "TIFF", "tif" };
return IsInIgnoreCase(ext, imge);
}
private static bool IsInIgnoreCase(string source, params string[] list)
{
if (null == source) return false;
IEnumerable<string> en = list.Where(i => string.Compare(i, source, StringComparison.OrdinalIgnoreCase) == 0);
return en.Count() == 0 ? false : true;
}
/// <summary>
/// 读取图片文件
/// </summary>
/// <param name="path">图片文件路径</param>
/// <returns>图片文件</returns>
private Bitmap ReadImageFile(String path)
{
Bitmap bitmap = null;
try
{
FileStream fileStream = File.OpenRead(path);
Int32 filelength = 0;
filelength = (int)fileStream.Length;
Byte[] image = new Byte[filelength];
fileStream.Read(image, 0, filelength);
System.Drawing.Image result = System.Drawing.Image.FromStream(fileStream);
fileStream.Close();
bitmap = new Bitmap(result);
}
catch (Exception ex)
{
// 异常输出
}
return bitmap;
}
/// <summary>
/// 是否是视频
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static bool IsVideo(string filePath)
{
bool isVideo = false;
string fileName = filePath;
IList<string> formateList = new List<string> {
"avi","flv","mpg","mpeg","mpe","m1v","m2v","mpv2","mp2v","dat","ts","tp","tpr","pva","pss","mp4","m4v",
"m4p","m4b","3gp","3gpp","3g2","3gp2","ogg","mov","qt","amr","rm","ram","rmvb","rpm"};
string[] Namesuffix = fileName.Split('.');
if (Namesuffix.Length > 1)
{
if (formateList.Contains(Namesuffix[1]))
{
isVideo = true;
}
}
return isVideo;
}
#endregion
}
}
......@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
......@@ -47,7 +48,7 @@ namespace VIZ.TVP.Module
/// 更新文件模型
/// </summary>
/// <param name="folder">文件夹</param>
public void UpdateFileModels(GHResourceFolderModel folder)
public void UpdateFileModels(GHResourceFolderModel folder)
{
// 文件夹对象不存在
if (folder == null)
......@@ -57,40 +58,130 @@ namespace VIZ.TVP.Module
return;
}
// 已经获取过文件
//// 已经获取过文件
if (folder.IsRefreshedFiles)
{
this.Support.FileModels = folder.Files;
return;
}
GH_Link_Node link_related = folder.EntryNode.links.FirstOrDefault(p => p.rel == GH_Link_Rel_Enums.related);
if (link_related == null || string.IsNullOrWhiteSpace(link_related.href))
{
folder.IsRefreshedFiles = true;
return;
}
//GH_Link_Node link_related = folder.EntryNode.links.FirstOrDefault(p => p.rel == GH_Link_Rel_Enums.related);
//if (link_related == null || string.IsNullOrWhiteSpace(link_related.href))
//{
// folder.IsRefreshedFiles = true;
// return;
//}
this.Support.IsFileLoading = true;
//this.Support.IsFileLoading = true;
ThreadHelper.SafeRun(() =>
{
List<GHResourceFileModel> files = ghResourceService.GetGHResourceFiles(link_related.href, folder);
//ThreadHelper.SafeRun(() =>
//{
// List<GHResourceFileModel> files = ghResourceService.GetGHResourceFiles(link_related.href, folder);
WPFHelper.BeginInvoke(() =>
// WPFHelper.BeginInvoke(() =>
// {
// folder.Files = files.ToObservableCollection();
// this.Support.FileModels = folder.Files;
// folder.IsRefreshedFiles = true;
// this.Support.IsFileLoading = false;
// // 开始下载缩略图
// this.BeginDownloadThumbnail(folder);
// });
//});
//
WPFHelper.BeginInvoke(async () =>
{
folder.Files = files.ToObservableCollection();
this.Support.FileModels = folder.Files;
folder.IsRefreshedFiles = true;
this.Support.IsFileLoading = false;
string header = string.Format("http://192.168.3.76:9000/api/home/GetListFile?filePath={0}", folder.Path);
var FileResult = await MediaResourceFileService.PostObjectAsync<fileListResult,string>(header,"");
List<GHResourceFileModel> list = new List<GHResourceFileModel>();
// folder.Files = new System.Collections.ObjectModel.ObservableCollection<GHResourceFileModel>();
foreach (var file in FileResult.masterData)
{
GHResourceFileModel GHFile = new GHResourceFileModel();
// 开始下载缩略图
this.BeginDownloadThumbnail(folder);
GHFile.Name = file.fileName;
GHFile.Path = file.smallIconUrl;
list.Add(GHFile);
if(ThumbnailHelper.IsImage(GHFile.Name))
{
//GetFile
string url = string.Format("http://192.168.3.76:9000/api/home/GetFile?filePath={0}", folder.Path);
// var r
}
else if(ThumbnailHelper.IsImage(GHFile.Name))
{
}
}
});
});
}
public async Task<List<GHResourceFolderModel>> GetMeiaResourceFolder()
{
var folderResult = await MediaResourceFileService.PostObjectAsync<fileListResult, string>("http://192.168.3.76:9000/api/home/GetListFiles", "");
if (folderResult == null)
return null;
return GetFolder(folderResult.masterData);
}
private List<GHResourceFolderModel> GetFolder(List<ms> foldersDatas)
{
List<GHResourceFolderModel> listFolderModel = new List<GHResourceFolderModel>();
foreach(var floderData in foldersDatas)
{
if(floderData.fileType== "floder")
{
GHResourceFolderModel child = new GHResourceFolderModel();
child.Name = floderData.fileName;
child.FolderType = ResourceFolderType.Folder;
child.Path = floderData.smallIconUrl;
List<GHResourceFolderModel> children_list = GetFolder(floderData.m);
foreach (GHResourceFolderModel item in children_list)
{
child.Children.Add(item);
item.Parent = child;
}
listFolderModel.Add(child);
}
}
return listFolderModel;
}
/// <summary>
/// 开始下载缩略图
/// </summary>
......
using log4net;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.TVP.Module
{
public static class MediaResourceFileService
{
/// <summary>
/// 日志
/// </summary>
private static readonly ILog log = LogManager.GetLogger(typeof(VizResourceFileController));
/// <summary>
/// 使用post方法异步请求
/// </summary>
/// <param name="url">目标链接</param>
/// <param name="json">发送的参数字符串,只能用json</param>
/// <returns>返回的字符串</returns>
public static async Task<string> PostAsyncJson(string url, string json)
{
try
{
HttpClient client = new HttpClient();
HttpContent content = new StringContent(json);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}
catch(Exception ex)
{
log.Error(string.Format("{0}_{1}","获取媒体资源文件夹",ex.ToString()));
return "";
}
}
/// <summary>
/// 使用post方法异步请求
/// </summary>
/// <param name="url">目标链接</param>
/// <param name="data">发送的参数字符串</param>
/// <returns>返回的字符串</returns>
public static async Task<string> PostAsync(string url, string data, Dictionary<string, string> header = null, bool Gzip = false)
{
HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
HttpContent content = new StringContent(data);
if (header != null)
{
client.DefaultRequestHeaders.Clear();
foreach (var item in header)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
}
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = "";
//if (Gzip)
//{
// GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
// responseBody = new StreamReader(inputStream).ReadToEnd();
//}
//else
//{
responseBody = await response.Content.ReadAsStringAsync();
//}
return responseBody;
}
/// <summary>
/// 使用get方法异步请求
/// </summary>
/// <param name="url">目标链接</param>
/// <returns>返回的字符串</returns>
public static async Task<string> GetAsync(string url, Dictionary<string, string> header = null, bool Gzip = false)
{
HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
if (header != null)
{
client.DefaultRequestHeaders.Clear();
foreach (var item in header)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
}
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();//用来抛异常的
string responseBody = "";
//if (Gzip)
//{
// GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
// responseBody = new StreamReader(inputStream).ReadToEnd();
//}
//else
//{
responseBody = await response.Content.ReadAsStringAsync();
//}
return responseBody;
}
/// <summary>
/// 使用post返回异步请求直接返回对象
/// </summary>
/// <typeparam name="T">返回对象类型</typeparam>
/// <typeparam name="T2">请求对象类型</typeparam>
/// <param name="url">请求链接</param>
/// <param name="obj">请求对象数据</param>
/// <returns>请求返回的目标对象</returns>
public static async Task<T> PostObjectAsync<T, T2>(string url, T2 obj)
{
String json = JsonConvert.SerializeObject(obj);
string responseBody = await PostAsyncJson(url, json); //请求当前账户的信息
return JsonConvert.DeserializeObject<T>(responseBody);//把收到的字符串序列化
}
/// <summary>
/// 使用Get返回异步请求直接返回对象
/// </summary>
/// <typeparam name="T">请求对象类型</typeparam>
/// <param name="url">请求链接</param>
/// <returns>返回请求的对象</returns>
public static async Task<T> GetObjectAsync<T>(string url)
{
string responseBody = await GetAsync(url); //请求当前账户的信息
return JsonConvert.DeserializeObject<T>(responseBody);//把收到的字符串序列化
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.TVP.Module
{
public class fileListResult
{
/// <summary>
/// 状态码:0-成功
/// </summary>
public string errCode
{
get;
set;
}
/// <summary>
/// 状态描述:0-成功
/// </summary>
public string message
{
get;
set;
}
/// <summary>
/// 状态描述:0-success
/// </summary>
public string status
{
get;
set;
}
/// <summary>
/// 设置文件信息
/// </summary>
public List<ms> masterData = new List<ms>();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.TVP.Module
{
public class ms
{
public string fileName
{
get;
set;
}
public string smallIconUrl
{
get;
set;
}
public string fileType
{
get;
set;
}
public List<ms> m = new List<ms>();
}
}
......@@ -11,6 +11,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Documents;
using VIZ.Framework.Core;
using VIZ.Framework.Plugin;
using VIZ.TVP.Domain;
......@@ -96,7 +97,7 @@ namespace VIZ.TVP.Module
selectedFolderModel = value;
this.RaisePropertyChanged(nameof(SelectedFolderModel));
// 更新文件模型
this.mediaResourceFileController.UpdateFileModels(value);
// this.mediaResourceFileController.UpdateFileModels(value);
}
}
......@@ -229,7 +230,7 @@ namespace VIZ.TVP.Module
{
this.IsFolderLoading = false;
Task.Run(() =>
Task.Run(async () =>
{
try
{
......@@ -245,6 +246,21 @@ namespace VIZ.TVP.Module
// this.IsFolderLoading = false;
//});
//http://192.168.3.76:9000/api/home/GetListFiles
//List <GHResourceFolderModel> list= await this.mediaResourceFileController.GetMeiaResourceFolder();
// if (list == null) return;
//this.FolderModels = list.ToObservableCollection();
//WPFHelper.BeginInvoke(() =>
//{
// this.FolderModels = list.FirstOrDefault()?.Children.Select(p => (GHResourceFolderModel)p).ToObservableCollection();
// this.IsFolderLoading = false;
//});
}
......
......@@ -204,6 +204,9 @@
<Compile Include="Resource\LocalResource\Controller\LocalResourceFile\ThumbnailHelper.cs" />
<Compile Include="Resource\MediaResource\Controller\MediaResourceFile\IMediaResourceFileSupport.cs" />
<Compile Include="Resource\MediaResource\Controller\MediaResourceFile\MediaResourceFileController.cs" />
<Compile Include="Resource\MediaResource\Controller\MediaResourceFile\MediaResourceFileService.cs" />
<Compile Include="Resource\MediaResource\Controller\Model\fileListResult.cs" />
<Compile Include="Resource\MediaResource\Controller\Model\ms.cs" />
<Compile Include="SettingInner\Control\ViewModel\ControlSettingViewModel.cs" />
<Compile Include="SettingInner\Control\View\ControlSettingView.xaml.cs">
<DependentUpon>ControlSettingView.xaml</DependentUpon>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment