-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFileHelper.cs
147 lines (143 loc) · 3.62 KB
/
FileHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using System;
using System.IO;
using System.Web;
using System.Web.Mvc;
namespace NetFrameworkHelper
{
/// <summary>
/// The FileHelper is used for common file operations. While most of these are custom string extensions, they
/// are used with handling file operations.
/// </summary>
public static class FileHelper
{
/// <summary>
/// This extension method will retun a FileContentResult from a path to a file.
/// <para>This result is return ready- includes mime-type for the specified file</para>
/// </summary>
/// <param name="pathToFile">Full path to a file</param>
/// <returns>FileCointentResult</returns>
public static FileContentResult FileContentResultFromString(this string pathToFile)
{
try
{
FileAttributes attr = File.GetAttributes(pathToFile);
if (attr.HasFlag(FileAttributes.Directory))
{
throw new Exception("The specified path is a directory. Please supply the file name in addition to the file path.");
}
}
catch
{
throw;
}
if (File.Exists(pathToFile))
{
return new FileContentResult(pathToFile.FileBytesFromPath(), pathToFile.GetMimeFromFilePath());
}
else
{
throw new FileNotFoundException(nameof(pathToFile), "The file you requested was not found.");
}
}
/// <summary>
/// Get a mime type for a file path
/// </summary>
/// <param name="pathToFile"></param>
/// <returns></returns>
public static string GetMimeFromFilePath(this string pathToFile)
{
try
{
FileAttributes attr = File.GetAttributes(pathToFile);
if (attr.HasFlag(FileAttributes.Directory))
{
throw new Exception("The specified path is a directory. Please supply the file name in addition to the file path.");
}
}
catch
{
throw;
}
if (File.Exists(pathToFile))
{
string fileName = Path.GetFileName(pathToFile);
return fileName.GetMimeFromFileName();
}
else
{
throw new FileNotFoundException("File not found.");
}
}
/// <summary>
/// Get a mime type for a file name
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string GetMimeFromFileName(this string fileName)
{
try
{
FileAttributes attr = File.GetAttributes(fileName);
if (attr.HasFlag(FileAttributes.Directory))
{
throw new Exception("The specified path is a directory. Please supply the file name.");
}
}
catch
{
throw;
}
return MimeMapping.GetMimeMapping(fileName);
}
/// <summary>
/// Returns the byte array for a specified file path
/// </summary>
/// <param name="pathToFile">File Path string</param>
/// <returns>byte[]</returns>
public static byte[] FileBytesFromPath(this string pathToFile)
{
if (File.Exists(pathToFile))
{
return File.ReadAllBytes(pathToFile);
}
else
{
throw new FileNotFoundException(nameof(pathToFile), "The file you requested was not found.");
}
}
/// <summary>
/// Useful for deleting a file given the full path to the file
/// </summary>
/// <param name="pathToFile">path to the file</param>
public static void DeleteFile(this string pathToFile)
{
try
{
FileAttributes attr = File.GetAttributes(pathToFile);
if (attr.HasFlag(FileAttributes.Directory))
{
throw new Exception("The specified path is a directory. Please supply the file name in addition to the file.");
}
}
catch
{
throw;
}
if (File.Exists(pathToFile))
{
try
{
File.Delete(pathToFile);
}
catch
{ //catch any exceptions and rethrow them
throw;
}
}
else
{
throw new FileNotFoundException("The file was not found");
}
}
}
}