내 웹 응용 프로그램 (asp.net, c #)에서 페이지에 비디오 파일을 업로드하고 있지만 flv 비디오 만 업로드하고 싶습니다. 다른 확장 동영상을 업로드 할 때 어떻게 제한 할 수 있습니까?
답변
string myFilePath = @"C:\MyFile.txt";
string ext = Path.GetExtension(myFilePath);
// ext would be ".txt"
답변
단순히 파일 스트림을 읽을 수 있습니다
using (var target = new MemoryStream())
{
postedFile.InputStream.CopyTo(target);
var array = target.ToArray();
}
처음 5/6 인덱스는 파일 형식을 알려줍니다. FLV의 경우 70, 76, 86, 1, 5 입니다.
private static readonly byte[] FLV = { 70, 76, 86, 1, 5};
bool isAllowed = array.Take(5).SequenceEqual(FLV);
경우 isAllowed
등호 true
다음은 FLV.
또는
파일 내용 읽기
var contentArray = target.GetBuffer();
var content = Encoding.ASCII.GetString(contentArray);
처음 두세 글자는 파일 형식을 알려줍니다.
FLV의 경우 “FLV ……”
content.StartsWith("FLV")
답변
서버에서 MIME 유형을 확인할 수 있습니다. 여기 또는 Google에서 flv mime 유형을 검색하십시오.
MIME 유형이
video/x-flv
예를 들어 C #에서 FileUpload를 사용하고 있다면
FileUpload.PostedFile.ContentType == "video/x-flv"
답변
이것이 당신이 원하는 것인지 확실하지 않지만 :
Directory.GetFiles(@"c:\mydir", "*.flv");
또는:
Path.GetExtension(@"c:\test.flv")
답변
또한가있는 경우 FileInfo fi
간단하게 수행 할 수 있습니다.
string ext = fi.Extension;
파일의 확장명을 보유합니다 (참고 :을 포함 .
하므로 위의 결과는 다음 .jpg
.txt
과 같습니다 .
답변
사용자가 클라이언트 측에서 업로드하는 파일 형식을 제한 할 수 없습니다 [*]. 서버 측에서만이 작업을 수행 할 수 있습니다. 사용자가 잘못된 파일을 업로드하면 파일이 업로드 된 후에 만 파일을 인식 할 수 있습니다. 사용자가 원하는 파일 형식을 업로드하지 못하게하는 안전하고 안전한 방법은 없습니다.
[*] 예, 업로드를 시작하기 전에 파일 확장명을 감지하기 위해 모든 종류의 영리한 작업을 수행 할 수 있지만 파일에 의존하지는 마십시오. 누군가 주위를 돌아 다니며 조만간 원하는 것을 업로드합니다.
