从Android手机上传图像类型应用程序/ Octet-Stream

时间:2012-10-13 15:52:29

标签: c# asp.net file-upload content-type

我有一个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")


                        {

1 个答案:

答案 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评论中提到的那样,如果你要允许有人上传病毒或任何其他可执行文件的应用程序/八位字节流,我真的看不到内容类型过滤器中的要点大量其他文件类型。