0

我有一个问题,在我的 ashx.cs 处理程序中,application/octet-stream即使我上传图像,我也总是得到一个内容类型。

我使用 uploadify 进行上传,首先我使用的是 uploadify v2.1.0。我已经升级到 uploadify 3.1。无论如何,我application/octet-stream使用任一版本作为 ContentType 接收。

我读到这可能是 Flash 播放器的问题,所以我使用他们的卸载程序卸载了 Flash,并尝试了 Flash Player 10.1.102.6411_1r102_55_64bit并尝试再次重新安装最新版本。所有三个版本都没有更改内容类型。

我使用了 Internet Explorer 8 和 9,没有任何改变。还有 Windows Server 2008 R2 64bit 和 Windows 7 64bit。

我的.ashx处理程序:

namespace HttpHandlers
{
    public class UploadsHandler
        : IHttpHandler
    {
        /// <summary>
        /// Enables processing of HTTP Web requests by a custom HttpHandler that implements the <see cref="T:System.Web.IHttpHandler" /> interface.
        /// </summary>
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                HttpPostedFile file = context.Request.Files["Filedata"];
                string mimeType = file.ContentType; // always application/octet-stream

                context.Response.ContentType = "text/plain";
                context.Response.Write("success");
            }
            catch (Exception ex)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write(ex.Message);
            }
        }

        /// <summary>
        /// Gets a value indicating whether another request can use the <see cref="T:System.Web.IHttpHandler" /> instance.
        /// </summary>
        /// <returns>true if the <see cref="T:System.Web.IHttpHandler" /> instance is reusable; otherwise, false.</returns>
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

在这一点上我没有想法......这在以前一直有效,直到发生了一些变化,现在我正试图弄清楚......

4

1 回答 1

0

好吧,这根本不是 asp.net 问题。

mime 类型是浏览器发送的 HTTP 协议序列的一部分,他有责任确定它。

有些很烂,有些还可以,有时。

查看

http://blog.futtta.be/2009/08/24/http-upload-mime-type-hell/

用于分析哪些 mime 类型会为 cs 上传而传输。颇有启迪。

如果您需要识别文件是什么,则必须在服务器端进行,假设文件扩展名正确和/或解析文件。我记得 10 年前我们写一个 CMS 时,我们实际上将所有上传到内存中的图像加载到内存中以确保它们是有效的。您不能依赖 mime 类型是正确的。但是你确实得到了一个文件名,它可以用来找到“正确的”mime 类型,除非文件的扩展名错误。

于 2013-01-03T05:53:34.743 回答