我有一个aspx页面,允许用户为他们的帐户上传图片。当我尝试从Android手机浏览器填写表单时,它会抛出一个错误。
我写了我的页面说我的手机发送上传文件的类型。 它的......应用程序/ Octet-Stream
我如何接受此档案?我尝试了以下代码而没有成功。
var FileExtension = Path.GetExtension(FileUpload1.PostedFile.FileName);
//FileUpload1.PostedFile.ContentType ==
if (FileUpload1.PostedFile.ContentType.ToLower() == "image/jpg" ||
FileUpload1.PostedFile.ContentType.ToLower() == "image/jpeg" ||
FileUpload1.PostedFile.ContentType.ToLower() == "image/pjpeg" ||
FileUpload1.PostedFile.ContentType.ToLower() == "image/gif" ||
FileUpload1.PostedFile.ContentType.ToLower() == "image/x-png" ||
FileUpload1.PostedFile.ContentType.ToLower() == "image/png" ||
FileUpload1.PostedFile.ContentType.ToLower() == "Application/Octet-Stream")
{
答案 0 :(得分:1)
问题的第1部分是你正在做一个糟糕的字符串比较。最后一次比较将低位字符串与具有大写字母的字符串进行比较。试试这个:
string[] sTypes = { "image/jpg", "image/jpeg", "image/pjpeg", "image/gif", "image/x-png",
"image/png", "Application/Octet-Stream" };
bool bIsMatch = false;
foreach (string sType in sTypes)
{
if (String.Compare(sType, FileUpload1.PostedFile.ContentType, true) == 0)
bIsMatch = true;
}
if (bIsMatch)
{
//Allow upload
}
就像我在你的OP评论中提到的那样,如果你要允许有人上传病毒或任何其他可执行文件的应用程序/八位字节流,我真的看不到内容类型过滤器中的要点大量其他文件类型。