在我的web应用程序(asp.net,c#)我上传视频文件的页面,但我只想上传flv视频。如何限制我上传其他分机视频的时间?如何查找文件的扩展名?
回答
string myFilePath = @"C:\MyFile.txt";
string ext = Path.GetExtension(myFilePath);
// ext would be ".txt"
谢谢你,詹姆斯先生,它很好地工作,谢谢你的回应 – 2009-12-11 09:44:18
这允许别人重命名任何文件* .flv并上传它。根据您的要求,您可能还需要检查MIME类型。 – 2009-12-11 09:44:18
通常根据文件扩展名来设置MIME类型吗? – Thilo 2009-12-11 09:49:01
在你可以在这里或对谷歌检查MIME类型,查找FLV MIME类型的服务器。
你应该检查MIME类型是
video/x-flv
如果你在C#例如,使用一个FileUpload,你可以做
FileUpload.PostedFile.ContentType == "video/x-flv"
我不知道这是什么你想,但:
Directory.GetFiles(@"c:\mydir", "*.flv");
或者:
Path.GetExtension(@"c:\test.flv")
感谢你卡拉先生正在工作 – 2009-12-11 10:03:08
您将无法限制用户在客户端上载的文件类型[*]。你只能在服务器端做到这一点。如果用户上传不正确的文件,则只有在文件上传后才能识别上传。没有可靠和安全的方法来阻止用户上传他们想要的任何文件格式。
[*]是的,你可以做各种聪明的东西来检测文件扩展名,然后再开始上传,但不要依赖它。有人会绕过它,迟早会上传他们喜欢的任何内容。
尽管他无法阻止黑客上传他想要的内容,但他仍然应该检查客户端,以方便用户。 Flash上传应该能够检查文件类型。 – Thilo 2009-12-11 09:40:30
OP没有提到Flash上传器(这是'用Flash写的上传器',而不是'Flash上传器')。这个问题是用asp.net和c#标签标记的,通过这些技术选择,客户端检查是有限的,很容易被打败。 :) – ZombieSheep 2009-12-11 09:44:48
对于视频上传网站,他应该在客户端有更好的东西,然后HTML上传表单。没有进度条的多MB上传并不好玩。 – Thilo 2009-12-11 09:50:52
此外,如果你有一个FileInfo fi
,你可以简单地做:
string ext = fi.Extension;
,它会保持文件的扩展名(注:这将包括.
,因此上述的结果可能是:.jpg
.txt
,等等....
您可以简单地读取文件的流
using (var target = new MemoryStream())
{
postedFile.InputStream.CopyTo(target);
var array = target.ToArray();
第一5/6索引会告诉你文件类型。在FLV的情况下,它的
私有静态只读字节[] FLV = {70,76,86,1,5};
Just do - var isAllowed = array.Take(5).SequenceEqual(FLV);
如果是,那么它的FLV。
OR
阅读文件
var contentArray = target.GetBuffer();
var content = Encoding.ASCII.GetString(contentArray);
前两/三个字母会告诉你该文件类型的内容。如果FLV其
的 “FLV | \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 ......”
Just do - content.StartsWith("FLV")
这应该被评为更高。如果你真的希望你的应用程序工作,并且数据不可信,你应该检查开始。 – PRMan 2017-04-24 21:14:08
该解决方案还有助于在一个以上的分机一样的情况下, “Avishay.student.DB”
FileInfo FileInf = new FileInfo(filePath);
string strExtention = FileInf.Name.Replace(System.IO.Path.GetFileNameWithoutExtension(FileInf.Name), "");
在DotNetPerls找到一个替代的解决方案了,我更喜欢的,因为它不要求你指定一个路径。这里有一个例子,我填充的数组用自定义的方法
// This custom method takes a path
// and adds all files and folder names to the 'files' array
string[] files = Utilities.FileList("C:\", "");
// Then for each array item...
foreach (string f in files)
{
// Here is the important line I used to ommit .DLL files:
if (!f.EndsWith(".dll", StringComparison.Ordinal))
// then populated a listBox with the array contents
myListBox.Items.Add(f);
}
string FileExtn = System.IO.Path.GetExtension(fpdDocument.PostedFile.FileName);
以上方法正常工作与Firefox和IE浏览器的帮助下,我能够查看所有类型,如ZIP,TXT文件, xls,xlsx,doc,docx,jpg,png
但是当我试图从googlechrome找到文件的扩展名时,我失败了。
- 1. 查找文件扩展名的目录
- 2. 如何查找文件列表中的文件扩展名?
- 3. 如何查找文件名的特定部分/扩展名?
- 4. 批量查找文件扩展名
- 5. PHP查找扩展没有扩展名
- 6. 如何使用UNIX查找文件扩展名?
- 7. 查找带有某些文件扩展名的文件C++
- 8. 查找下载文件的文件扩展名(AIR)
- 9. 查找名称和扩展
- 10. 查找并重命名没有扩展名的文件?
- 11. 如何通过JQuery找到没有扩展名的文件名
- 12. Perl找到文件的扩展名
- 13. 用php找到文件的扩展名
- 14. 如何在IsolatedStorage中检查文件的文件扩展名?
- 15. 如何查看或重命名缺少扩展名的文件?
- 16. 检查有效的文件扩展名
- 17. 如何更改文件的扩展名?
- 18. 无法找到此文件扩展名
- 19. 文件扩展名
- 20. 文件扩展名
- 21. 查找文件夹中的图片不带扩展名
- 22. 递归地查找具有特定扩展名的文件
- 23. 查找bash脚本中文件扩展名最大的索引
- 24. 递归查找具有特定扩展名的文件
- 25. 在目录树中查找给定扩展名的文件
- 26. 使用find命令查找特定的文件扩展名
- 27. 查找没有扩展名的可执行文件?
- 28. 如何在java中找到上传文件的扩展名?
- 29. SQLite:.db文件扩展名.sqlite文件扩展名为
- 30. ssh.net检查文件扩展名
如果可能,还希望检查客户端,以避免不必要的上传。 – Thilo 2009-12-11 09:37:36
是的,但请参阅下面的答案 - 不要依赖客户端检查 - 它迟早会被绕过。 :) – ZombieSheep 2009-12-11 09:39:26
客户端检查不是为您的服务器提供保护,而是为用户提供便利。 – Thilo 2009-12-11 09:41:14