我遇到的问题是,在我的ashx.cs处理程序中,即使上传图像,我也始终会获得application/octet-stream
的内容类型。
我使用uploadify进行上传,首先我使用的是uploadify v2.1.0
。我已升级到uploadify 3.1
。无论如何,我使用任一版本都会收到application/octet-stream
作为ContentType。
我读到它可能是一个Flash播放器问题,因此我使用their uninstaller取消安装了Flash,并尝试了Flash Player 10.1.102.64
和11_1r102_55_64bit
并尝试重新安装最新版本。所有三个版本都没有更改内容类型。
我使用的是Internet Explorer 8和9,没有任何更改......以及Windows Server 2008 R2 64位和Windows 7 64位。
我的.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;
}
}
}
}
我现在没有想法......这是先前的工作,直到某些事情改变了,现在我想弄清楚是什么......
答案 0 :(得分:0)
嗯,这根本不是asp.net。
mime类型是浏览器发送的HTTP协议序列的一部分,他有责任确定它。
有些人很糟糕,有些人很好,有时候。
检查
http://blog.futtta.be/2009/08/24/http-upload-mime-type-hell/
用于分析为cs上传传输的mime类型。相当透露。
如果您需要确定文件是什么,则必须执行该服务器端,假设文件扩展名正确和/或解析文件。我记得10年前我们编写CMS的时候,实际上我们已经上传到内存中的所有图像都是为了确保它们有效。你不能依赖mime类型是正确的。但是你得到一个文件名,可以用来找到“正确的”mime类型,除非文件的扩展名错误。