从安卓手机上传图像类型应用程序/八位字节流

Posted

技术标签:

【中文标题】从安卓手机上传图像类型应用程序/八位字节流【英文标题】:Uploading an Image Type Application/Octet-Stream from android phone 【发布时间】:2012-10-04 04:38:25 【问题描述】:

我有一个 aspx 页面,允许用户为他们的帐户上传图片。当我尝试从安卓手机浏览器填写表单时,它会抛出一个错误。

我写出了我的页面上说我的手机正在发送以供上传的文件类型。 它的这个......应用程序/八位字节流

我如何接受这个文件?我在下面尝试了这段代码,但没有成功。

                        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")


                        

【问题讨论】:

什么是错误,为什么要检查内容类型,特别是如果您要允许 application/octet-stream 基本上是任何文件,但最重要的是任何可执行文件,包括我认为是唯一的病毒你首先检查内容类型的原因...... 我正在尝试从我的手机上传一张图片。我刚刚得到我的 else 声明,它说你需要选择一个正确的图像类型..它说图像是那种类型的。应用程序/八位字节流。 删除内容类型过滤器,让我知道会发生什么。 从最后一个 if 语句开始?那么这段代码呢? FileUpload1.PostedFile.ToLower() == "application/octet-stream" 删除整个 if 块,看看会发生什么,或查看下面的答案。 【参考方案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 cmets 中提到的那样,如果您要允许应用程序/八位字节流允许某人上传病毒或任何其他可执行文件和一个大量其他文件类型。

【讨论】:

我不想让所有文件只允许图像。但是,当我从手机上传图像时,它并没有被识别为图像。它说它的类型是Application/Octet-Stream。不过感谢上面的代码。它会解决这个问题。我需要正确地改写我的问题。 不用担心。请注意,application/octet-stream 将允许人们上传可执行文件、pdf 以及几乎任何类型的文件。它有点像一种开放式文件类型。如果您要包含它,我还建议您按文件扩展名进行过滤。

以上是关于从安卓手机上传图像类型应用程序/八位字节流的主要内容,如果未能解决你的问题,请参考以下文章

Webapp2 请求应用程序/八位字节流文件上传

Spring文件上传内容类型验证,总是八位字节流?

在颤动中将应用程序/八位字节流转换为图像/jpeg/png?

MIME、八位字节流和 Uploadify

文件上传错误“应用程序/八位字节流”

未找到媒体类型 = 应用程序/八位字节流的 MessageBodyReader