Html Mime Tipo Binario Opcoes




Id recomendam applicationoctet-stream como RFC2046 diz O octeto-fluxo subtipo e usado para indicar que um corpo contem arbitraria dados binarios e A acao recomendada para uma implementacao que recebe um applicationoctet-stream entidade e simplesmente oferecer para colocar os dados em um arquivo. . Eu acho que dessa forma voce vai obter um melhor tratamento de programas arbitrarios, que podem barf ao encontrar o seu tipo mime desconhecido. Os cabecalhos do tipo mimetype sao reconhecidos pelo navegador com a finalidade de identificar um manipulador (rapido) para usar o arquivo baixado como destino, por exemplo, o PDF seria baixado eo programa do Adobe Reader seria executado com o caminho do arquivo PDF como Um argumento, Se as suas necessidades sao para escrever uma extensao do navegador para lidar com o seu arquivo baixado, atraves do seu sistema de operacao, ou voce simplesmente quer fazer voce projetar um olhar mais profissional va em frente e selecione um unico mimetype para voce usar, Nao faz nenhuma diferenca desde que o sistema de operacao nao teria nenhuma alca para abri-lo com (alguns navegadores tem poucos bundled-plugins, por exemplo, novas versoes do Google Chrome tem um built-in PDF-reader), se voce quiser ter certeza de que o arquivo seria Ser baixado ter um olhar para esta resposta: stackoverflowa34758866257319 se voce quiser fazer o seu tipo de arquivo especialmente organizado, pode valer a pena adicionar algumas letras nos primeiros bytes do arquivo, por exemplo, cada JPG tem isso em seu inicio do arquivo: Eu F voce pode pagar um salto de 4 ou 8 bytes que poderia ser muito util para voce no resto do caminho respondido Jan 13 16 as 6:13 voce poderia talvez usar: Respondido Dec 28 16 at 10:16 Sua resposta 2017 Stack Exchange , Inc4 O campo Content-Type Header O objetivo do campo Content-Type e descrever os dados contidos no corpo o suficiente para que o agente de usuario receptor possa escolher um agente ou mecanismo apropriado para apresentar os dados ao usuario ou, de outra forma, negociar Com os dados de forma adequada. O campo de cabecalho Tipo de conteudo e usado para especificar a natureza dos dados no corpo de uma entidade, fornecendo identificadores de tipo e de subtipo e fornecendo informacoes auxiliares que podem ser necessarias para determinados tipos. Apos os nomes de tipo e subtipo, o restante do campo de cabecalho e simplesmente um conjunto de parametros, especificado em uma notacao de valor de atributo. O conjunto de parametros significativos difere para os diferentes tipos. A ordenacao dos parametros nao e significativa. Entre os parametros definidos esta um parametro charset pelo qual o conjunto de caracteres usado no corpo pode ser declarado. Os comentarios sao permitidos de acordo com as regras RFC 822 para campos de cabecalho estruturados. Em geral, o Content-Type de nivel superior e usado para declarar o tipo geral de dados, enquanto o subtipo especifica um formato especifico para esse tipo de dados. Assim, um Content-Type de imagexyz e suficiente para dizer a um agente de usuario que os dados sao uma imagem, mesmo que o agente do usuario nao tenha conhecimento do formato de imagem especifico xyz. Essas informacoes podem ser usadas, por exemplo, para decidir se um usuario deve ou nao mostrar os dados brutos de um subtipo nao reconhecido - tal acao pode ser razoavel para subtipos de texto nao reconhecidos, mas nao para subtipos nao reconhecidos de imagem ou audio. Por esta razao, subtipos registados de audio, imagem, texto e video, nao devem conter informacoes incorporadas que sao realmente de um tipo diferente. Tais tipos de compostos devem ser representados usando o multipart ou tipos de aplicacao. Os parametros sao modificadores do subtipo de conteudo e nao afetam fundamentalmente os requisitos do sistema host. Embora a maioria dos parametros faca sentido apenas com certos tipos de conteudo, outros sao globais no sentido de que eles podem se aplicar a qualquer subtipo. Por exemplo, o parametro de limite faz sentido apenas para o tipo de conteudo multipart, mas o parametro charset pode fazer sentido com varios tipos de conteudo. Um conjunto inicial de sete Content-Types e definido por este documento. Este conjunto de nomes de nivel superior pretende ser substancialmente completo. Espera-se que as adicoes ao conjunto maior de tipos suportados geralmente possam ser realizadas pela criacao de novos subtipos desses tipos iniciais. No futuro, mais tipos de nivel superior podem ser definidos apenas por uma extensao a este padrao. Se outro tipo primario for usado por qualquer razao, deve ser dado um nome comecando com X - para indicar seu status nao padronizado e para evitar um conflito potencial com um nome oficial futuro. Na notacao BNF estendida da RFC 822. um valor de campo de cabecalho Content-Type e definido da seguinte forma: Note que a definicao de tspecials e a mesma que a definicao de RFC 822 de specials com a adicao dos tres caracteres, e. Observe tambem que uma especificacao de subtipo e OBRIGATORIA. Nao ha subtipos padrao. Os nomes de tipo, subtipo e parametro nao sao sensiveis a maiusculas e minusculas. Por exemplo, TEXT, Texto e TeXt sao todos equivalentes. Os valores dos parametros sao normalmente sensiveis a maiusculas e minusculas, mas certos parametros sao interpretados como insensiveis a maiusculas e minusculas, dependendo do uso pretendido. (Por exemplo, os limites de varias partes diferenciam maiusculas de minusculas, mas o tipo de acesso para messageExternal-body nao diferencia maiusculas de minusculas.) Alem dessa sintaxe, a unica restricao na definicao de nomes de subtipos e o desejo de que seus usos nao entrem em conflito. Ou seja, seria indesejavel ter duas comunidades diferentes usando Content-Type: applicationfoobar para significar duas coisas diferentes. O processo de definicao de novos subtipos de conteudo, entao, nao pretende ser um mecanismo para impor restricoes, mas simplesmente um mecanismo para divulgar os usos. Ha, portanto, dois mecanismos aceitaveis ??para a definicao de novos subtipos de tipo de conteudo: Os valores privados (comecando com X-) podem ser definidos bilateralmente entre dois agentes cooperantes sem registro externo ou padronizacao. Novos valores-padrao devem ser documentados, registrados e aprovados pela IANA, conforme descrito no Apendice F. Se forem destinados para uso publico, os formatos a que se referem tambem devem ser definidos por uma especificacao publicada e possivelmente oferecidos para padronizacao. Os sete tipos de conteudo predefinidos iniciais padrao sao detalhados na maior parte deste documento. Sao: texto informacao textual. O subtipo principal, plain, indica texto simples (nao formatado). Nenhum software especial e necessario para obter o significado completo do texto, alem de suporte para o conjunto de caracteres indicado. Subtipos devem ser usados ??para texto enriquecido em formularios onde o software aplicativo pode melhorar a aparencia do texto, mas esse software nao deve ser exigido para obter a ideia geral do conteudo. Os subtipos possiveis incluem assim qualquer formato de processador de texto legivel. Um subtipo muito simples e portatil, richtext, e definido neste documento. Multipart dados consistindo de varias partes de tipos de dados independentes. Sao definidos quatro subtipos iniciais, incluindo o subtipo primario misto, alternativo para representar os mesmos dados em multiplos formatos, paralelo para partes destinadas a ser visualizadas simultaneamente, e digerir para entidades multipartas em que cada parte e de tipo mensagem. Mensagem encapsulada. Um corpo de mensagem Content-Type e propriamente uma mensagem conformada RFC 822 totalmente formatada que pode conter seu proprio campo cabecalho Content-Type diferente. O subtipo principal e rfc822. O subtipo parcial e definido para mensagens parciais, para permitir a transmissao fragmentada de corpos que se pensa serem muito grandes para serem passados ??atraves de instalacoes de transporte de correio. Outro subtipo, Corpo externo, e definido para especificar corpos grandes por referencia a uma fonte de dados externa. Imagem de imagem. A imagem requer um dispositivo de exibicao (como uma tela grafica, uma impressora ou uma maquina de FAX) para exibir as informacoes. Subtipos iniciais sao definidos para dois formatos de imagem amplamente utilizados, jpeg e gif. Dados de audio e audio, com o subtipo inicial basico. O audio requer um dispositivo de saida de audio (como um alto-falante ou um telefone) para exibir o conteudo. Dados de video. O video requer a capacidade de exibir imagens em movimento, normalmente incluindo hardware e software especializados. O subtipo inicial e mpeg. Aplicativo algum outro tipo de dados, normalmente dados binarios nao interpretados ou informacoes a serem processadas por um aplicativo baseado em email. O subtipo primario, octet-stream, deve ser usado no caso de dados binarios nao interpretados, caso em que a acao mais simples recomendada e oferecer a escrever as informacoes em um arquivo para o usuario. Dois subtipos adicionais, ODA e PostScript, sao definidos para transportar documentos ODA e PostScript em corpos. Outros usos esperados para aplicacao incluem planilhas, dados para sistemas de agendamento baseados em correio e idiomas para e-mail ativo (computacional). (Observe que o email ativo envolve varias consideracoes de seguranca, que sao discutidas mais adiante neste memorando, particularmente no contexto de applicationPostScript.) As mensagens RFC padrao 822 sao digitadas por este protocolo como texto simples no conjunto de caracteres US-ASCII, que pode ser explicitamente especificado Como Content-type: textplain charsetus-ascii. Se nenhum Content-Type for especificado, por erro ou por um agente de usuario mais antigo, esse padrao e assumido. Na presenca de um campo de cabecalho MIME-Version, um agente de usuario de recebimento tambem pode assumir que o texto US-ASCII simples era a intencao dos remetentes. Na ausencia de uma especificacao MIME-Version, texto US-ASCII simples ainda deve ser assumido, mas a intencao dos remetentes poderia ter sido de outra forma. Deve-se notar que a lista de valores de Content-Type aqui pode ser aumentada no tempo, via Os mecanismos descritos acima, e que o conjunto de subtipos devera crescer substancialmente. Quando um leitor de correio encontra correio com um valor de tipo de conteudo desconhecido, ele geralmente deve trata-lo como equivalente a applicationoctet-stream, conforme descrito posteriormente neste documento. Dados de Formulario HTML em ASP Web API: Upload de Arquivo e Multipart MIME Exemplo de um formulario HTML para carregar um arquivo: Este formulario contem um controle de entrada de texto e um controle de entrada de arquivo. Quando um formulario contem um controle de entrada de arquivo, o atributo enctype sempre deve ser quotmultipartform-dataquot, que especifica que o formulario sera enviado como uma mensagem MIME multipart. O formato de uma mensagem MIME multipart e mais facil de entender ao olhar para um exemplo de solicitacao: Esta mensagem e dividida em duas partes. Um para cada controle de formulario. Os limites das partes sao indicados pelas linhas que comecam com tracos. O limite de peca inclui um componente aleatorio (quot41184676334quot) para garantir que a sequencia de limite nao apareca acidentalmente dentro de uma parte de mensagem. Cada parte da mensagem contem um ou mais cabecalhos, seguido do conteudo da peca. O cabecalho Content-Disposition inclui o nome do controle. Para arquivos, ele tambem contem o nome do arquivo. O cabecalho Content-Type descreve os dados na peca. Se este cabecalho e omitido, o padrao e textplain. No exemplo anterior, o usuario enviou um arquivo chamado GrandCanyon. jpg, com o tipo de conteudo imagejpeg eo valor da entrada de texto foi quotSummer Vacationquot. Upload de arquivo agora vamos olhar para um controlador de API da Web que le arquivos de uma mensagem MIME de varias partes. O controlador lera os arquivos de forma assincrona. A Web API suporta acoes assincronas usando o modelo de programacao baseado em tarefas. Primeiro, aqui esta o codigo se voce estiver direcionando Framework 4.5, que suporta as palavras-chave async e await. Observe que a acao do controlador nao tem parametros. Isso porque processamos o corpo de solicitacao dentro da acao, sem invocar um formatador de tipo de midia. O metodo IsMultipartContent verifica se a solicitacao contem uma mensagem MIME de varias partes. Caso contrario, o controlador retornara o codigo de status HTTP 415 (Unsupported Media Type). A classe MultipartFormDataStreamProvider e um objeto auxiliar que aloca fluxos de arquivos para arquivos carregados. Para ler a mensagem MIME de varias partes, chamar o metodo ReadAsMultipartAsync. Esse metodo extrai todas as partes da mensagem e as grava nos fluxos fornecidos pelo MultipartFormDataStreamProvider. Quando o metodo for concluido, voce pode obter informacoes sobre os arquivos da propriedade FileData, que e uma colecao de objetos MultipartFileData. MultipartFileData. FileName e o nome de arquivo local no servidor, onde o arquivo foi salvo. MultipartFileData. Headers contem o cabecalho da peca (nao o cabecalho da solicitacao). Voce pode usar isso para acessar os cabecalhos ContentDisposition e Content-Type. Como o nome sugere, ReadAsMultipartAsync e um metodo assincrono. Para executar o trabalho apos o termino do metodo, use uma tarefa de continuacao (4.0) ou a palavra-chave await (4.5). Aqui esta a versao Framework 4.0 do codigo anterior: Reading Form Control Data O formulario HTML que mostrei anteriormente tinha um controle de entrada de texto. Voce pode obter o valor do controle a partir da propriedade FormData do MultipartFormDataStreamProvider. FormData e um NameValueCollection que contem nomevalue pares para os controles de formulario. A colecao pode conter chaves duplicadas. Considere esta forma: O corpo de solicitacao pode ter a seguinte aparencia: Nesse caso, a colecao FormData contera os seguintes pares keyvalue: viagem: opcoes de ida e volta: opcoes sem escalas: datas seat: window