ContentType 不起作用,mime=application/octet-stream

Posted

技术标签:

【中文标题】ContentType 不起作用,mime=application/octet-stream【英文标题】:ContentType doesnt work, mime=application/octet-stream 【发布时间】:2010-11-04 19:09:43 【问题描述】:

在 C# 中我正在做

            context.Response.ContentType = "image/png";
            context.RewritePath(sz);
            context.Response.ContentType = "image/png";

它似乎重定向了路径,因为我可以在我的页面上看到图像。但是在Firefox中,当我右键单击并选择“查看图像”时,我会下载。使用这个 c++ 代码,我可以看到 mime 是 application/octet-stream

#include <curl/curl.h> 
#include <ios>
#include <iostream>
#include <string>
#pragma comment(lib, "curllib")
using namespace std;
size_t function( void *ptr, size_t size, size_t nmemb, void *stream)

    cout << (char*)ptr;
    return size*nmemb;

size_t function2( void *ptr, size_t size, size_t nmemb, void *stream)

    return size*nmemb;

int main()

    CURL *c = curl_easy_init();
    curl_easy_setopt(c, CURLOPT_HEADERFUNCTION, function);
    curl_easy_setopt(c, CURLOPT_WRITEHEADER , 1);
    curl_easy_setopt(c, CURLOPT_WRITEFUNCTION, function2);
    curl_easy_setopt(c, CURLOPT_WRITEDATA, 0);
    curl_easy_setopt(c, CURLOPT_URL, "http://localhost:3288/s/main/4/AAA.png");
    curl_easy_perform(c);
    curl_easy_cleanup(c);
    return 0;

我的问题是如何将 mime 设置为正确的类型?上面我将它硬编码为 png 不起作用。但是,我宁愿不对任何 mime 进行硬编码并让它工作。我能够将 XML 文件重定向到 somefile.aspx 并让页面设置内容类型并生成 XML。然而重写图像路径似乎让图像工作我只是没有得到正确的类型。

如何更正内容/mime 类型?作为 B 计划,我将重写为一个 aspx 文件。发送图像的最佳方式是什么?我可以做类似 context.Response.OutputStream=stream("filename"); ?

【问题讨论】:

【参考方案1】:

application/octet-stream 将告诉您的浏览器该文件是二进制文件,然后您的浏览器将下载它。

这在过去对我有用(HttpHandler 仅负责提供文件,因此明确调用):

Response.Clear();
Response.ClearHeaders();
Response.ContentType = "image/png";
Response.AddHeader("Content-Type", image/png");

如果你确实想下载文件,你也可以添加:

Response.AddHeader("Content-Disposition", "attachment; filename=myimage.png");

向浏览器建议要另存为的文件名。

【讨论】:

【参考方案2】:

当您使用RewritePath 时,您写入头部的任何内容都会被丢弃。处理新路径的任何内容都是提供标题。

如果要指定内容类型,则不能使用RewritePath。相反,您可以在设置标头后使用Response.BinaryWriteResponse.WriteFile 将文件数据输出到响应流。

【讨论】:

【参考方案3】:

查看:Create PNG image with C# HttpHandler webservice

它应该给你一个将 PNG 转储到响应中的示例。

【讨论】:

以上是关于ContentType 不起作用,mime=application/octet-stream的主要内容,如果未能解决你的问题,请参考以下文章

CSS/JS 在 HTML 中不起作用,错误:MIME 类型 ('text/html') 不是受支持的样式表 MIME 类型

如何序列化 System.Net.Mime.ContentType 类型的对象?

由于 MIME 错误,CSS 在网页上不起作用

在 web.config 中注册 MIME 类型不起作用?

Codeigniter psd 和 ai mime 类型不起作用

是否存在应用程序/javascript(作为 Javascript 的 MIME 类型)不起作用的情况?