private bool GetDocuContent(out byte[] Content, out string FileName, out string ExtensionName)
{
long MaxLength = 10485760; //10M以内
Content = null;
ExtensionName = string.Empty;
FileName = string.Empty;
OpenFileDialog vsOpenFileDialog = new OpenFileDialog();
vsOpenFileDialog.InitialDirectory = "d:\\";
vsOpenFileDialog.Filter = "All files (*.*)|*.*";
vsOpenFileDialog.FilterIndex = 0;
vsOpenFileDialog.Multiselect = false;
try
{
if (vsOpenFileDialog.ShowDialog() == DialogResult.OK)
{
//Path.GetExtension方法:返回指定的路径字符串的扩展名
ExtensionName = Path.GetExtension(vsOpenFileDialog.FileName);
//Path.GetFileName方法:返回指定路径字符串的文件名和扩展名。
FileName = Path.GetFileName(vsOpenFileDialog.FileName);
FileInfo vsFileInfo = new FileInfo(vsOpenFileDialog.FileName);
if (vsFileInfo.Length > MaxLength)
{
MessageBox.Show("文件超长!");
return false;
}
//vsFileInfo.OpenRead Method:Creates a read-only FileStream.
FileStream fileStream = vsFileInfo.OpenRead();
if (fileStream.Length == 0)
{
MessageBox.Show("空文件!");
return false;
}
Content = new byte[fileStream.Length];
int Size = fileStream.Read(Content, 0, Convert.ToInt32(fileStream.Length));
fileStream.Close();
return true;
}
return false;
}
catch (Exception ex)
{
return false;
}
}
小注:
1、C# Winform OpenFileDialog 控件
2、C# FileStream.Read Method
假如选择的文件1111.png,是跟踪内容显示:
ExtensionName = Path.GetExtension(vsOpenFileDialog.FileName)
FileName = Path.GetFileName(vsOpenFileDialog.FileName)
FileInfo vsFileInfo = new FileInfo(vsOpenFileDialog.FileName)
Content = new byte[fileStream.Length]
4、假如相对返回的byte[] Content加密的话,可以使用:Convert.ToBase64String(Content),该函数的返回值,依然是:byte[]类型的。