Saturday, 7 April 2018

Html mime tipo binário opções


Id recomendam applicationoctet-stream como RFC2046 diz O octeto-fluxo subtipo é usado para indicar que um corpo contém arbitrária dados binários e A ação recomendada para uma implementação que recebe um applicationoctet-stream entidade é simplesmente oferecer para colocar os dados em um arquivo. . Eu acho que dessa forma você vai obter um melhor tratamento de programas arbitrários, que podem barf ao encontrar o seu tipo mime desconhecido. Os cabeçalhos do tipo mimetype são reconhecidos pelo navegador com a finalidade de identificar um manipulador (rápido) 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 são para escrever uma extensão do navegador para lidar com o seu arquivo baixado, através do seu sistema de operação, ou você simplesmente quer fazer você projetar um olhar mais profissional vá em frente e selecione um único mimetype para você usar, Não faz nenhuma diferença desde que o sistema de operação não teria nenhuma alça para abri-lo com (alguns navegadores tem poucos bundled-plugins, por exemplo, novas versões do Google Chrome tem um built-in PDF-reader), se você quiser ter certeza de que o arquivo seria Ser baixado ter um olhar para esta resposta: stackoverflowa34758866257319 se você 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 início do arquivo: Eu F você pode pagar um salto de 4 ou 8 bytes que poderia ser muito útil para você no resto do caminho respondido Jan 13 16 às 6:13 você 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 é descrever os dados contidos no corpo o suficiente para que o agente de usuário receptor possa escolher um agente ou mecanismo apropriado para apresentar os dados ao usuário ou, de outra forma, negociar Com os dados de forma adequada. O campo de cabeçalho Tipo de conteúdo é usado para especificar a natureza dos dados no corpo de uma entidade, fornecendo identificadores de tipo e de subtipo e fornecendo informações auxiliares que podem ser necessárias para determinados tipos. Após os nomes de tipo e subtipo, o restante do campo de cabeçalho é simplesmente um conjunto de parâmetros, especificado em uma notação de valor de atributo. O conjunto de parâmetros significativos difere para os diferentes tipos. A ordenação dos parâmetros não é significativa. Entre os parâmetros definidos está um parâmetro charset pelo qual o conjunto de caracteres usado no corpo pode ser declarado. Os comentários são permitidos de acordo com as regras RFC 822 para campos de cabeçalho estruturados. Em geral, o Content-Type de nível superior é usado para declarar o tipo geral de dados, enquanto o subtipo especifica um formato específico para esse tipo de dados. Assim, um Content-Type de imagexyz é suficiente para dizer a um agente de usuário que os dados são uma imagem, mesmo que o agente do usuário não tenha conhecimento do formato de imagem específico xyz. Essas informações podem ser usadas, por exemplo, para decidir se um usuário deve ou não mostrar os dados brutos de um subtipo não reconhecido - tal ação pode ser razoável para subtipos de texto não reconhecidos, mas não para subtipos não reconhecidos de imagem ou áudio. Por esta razão, subtipos registados de áudio, imagem, texto e vídeo, não devem conter informações incorporadas que são realmente de um tipo diferente. Tais tipos de compostos devem ser representados usando o multipart ou tipos de aplicação. Os parâmetros são modificadores do subtipo de conteúdo e não afetam fundamentalmente os requisitos do sistema host. Embora a maioria dos parâmetros faça sentido apenas com certos tipos de conteúdo, outros são globais no sentido de que eles podem se aplicar a qualquer subtipo. Por exemplo, o parâmetro de limite faz sentido apenas para o tipo de conteúdo multipart, mas o parâmetro charset pode fazer sentido com vários tipos de conteúdo. Um conjunto inicial de sete Content-Types é definido por este documento. Este conjunto de nomes de nível superior pretende ser substancialmente completo. Espera-se que as adições ao conjunto maior de tipos suportados geralmente possam ser realizadas pela criação de novos subtipos desses tipos iniciais. No futuro, mais tipos de nível superior podem ser definidos apenas por uma extensão a este padrão. Se outro tipo primário for usado por qualquer razão, deve ser dado um nome começando com X - para indicar seu status não padronizado e para evitar um conflito potencial com um nome oficial futuro. Na notação BNF estendida da RFC 822. um valor de campo de cabeçalho Content-Type é definido da seguinte forma: Note que a definição de tspecials é a mesma que a definição de RFC 822 de specials com a adição dos três caracteres, e. Observe também que uma especificação de subtipo é OBRIGATÓRIA. Não há subtipos padrão. Os nomes de tipo, subtipo e parâmetro não são sensíveis a maiúsculas e minúsculas. Por exemplo, TEXT, Texto e TeXt são todos equivalentes. Os valores dos parâmetros são normalmente sensíveis a maiúsculas e minúsculas, mas certos parâmetros são interpretados como insensíveis a maiúsculas e minúsculas, dependendo do uso pretendido. (Por exemplo, os limites de várias partes diferenciam maiúsculas de minúsculas, mas o tipo de acesso para messageExternal-body não diferencia maiúsculas de minúsculas.) Além dessa sintaxe, a única restrição na definição de nomes de subtipos é o desejo de que seus usos não entrem em conflito. Ou seja, seria indesejável ter duas comunidades diferentes usando Content-Type: applicationfoobar para significar duas coisas diferentes. O processo de definição de novos subtipos de conteúdo, então, não pretende ser um mecanismo para impor restrições, mas simplesmente um mecanismo para divulgar os usos. Há, portanto, dois mecanismos aceitáveis ​​para a definição de novos subtipos de tipo de conteúdo: Os valores privados (começando com X-) podem ser definidos bilateralmente entre dois agentes cooperantes sem registro externo ou padronização. Novos valores-padrão devem ser documentados, registrados e aprovados pela IANA, conforme descrito no Apêndice F. Se forem destinados para uso público, os formatos a que se referem também devem ser definidos por uma especificação publicada e possivelmente oferecidos para padronização. Os sete tipos de conteúdo predefinidos iniciais padrão são detalhados na maior parte deste documento. São: texto informação textual. O subtipo principal, plain, indica texto simples (não formatado). Nenhum software especial é necessário para obter o significado completo do texto, além de suporte para o conjunto de caracteres indicado. Subtipos devem ser usados ​​para texto enriquecido em formulários onde o software aplicativo pode melhorar a aparência do texto, mas esse software não deve ser exigido para obter a idéia geral do conteúdo. Os subtipos possíveis incluem assim qualquer formato de processador de texto legível. Um subtipo muito simples e portátil, richtext, é definido neste documento. Multipart dados consistindo de várias partes de tipos de dados independentes. São definidos quatro subtipos iniciais, incluindo o subtipo primário misto, alternativo para representar os mesmos dados em múltiplos formatos, paralelo para partes destinadas a ser visualizadas simultaneamente, e digerir para entidades multipartas em que cada parte é de tipo mensagem. Mensagem encapsulada. Um corpo de mensagem Content-Type é propriamente uma mensagem conformada RFC 822 totalmente formatada que pode conter seu próprio campo cabeçalho Content-Type diferente. O subtipo principal é rfc822. O subtipo parcial é definido para mensagens parciais, para permitir a transmissão fragmentada de corpos que se pensa serem muito grandes para serem passados ​​através de instalações de transporte de correio. Outro subtipo, Corpo externo, é definido para especificar corpos grandes por referência a uma fonte de dados externa. Imagem de imagem. A imagem requer um dispositivo de exibição (como uma tela gráfica, uma impressora ou uma máquina de FAX) para exibir as informações. Subtipos iniciais são definidos para dois formatos de imagem amplamente utilizados, jpeg e gif. Dados de áudio e áudio, com o subtipo inicial básico. O áudio requer um dispositivo de saída de áudio (como um alto-falante ou um telefone) para exibir o conteúdo. Dados de vídeo. O vídeo requer a capacidade de exibir imagens em movimento, normalmente incluindo hardware e software especializados. O subtipo inicial é mpeg. Aplicativo algum outro tipo de dados, normalmente dados binários não interpretados ou informações a serem processadas por um aplicativo baseado em email. O subtipo primário, octet-stream, deve ser usado no caso de dados binários não interpretados, caso em que a ação mais simples recomendada é oferecer a escrever as informações em um arquivo para o usuário. Dois subtipos adicionais, ODA e PostScript, são definidos para transportar documentos ODA e PostScript em corpos. Outros usos esperados para aplicação incluem planilhas, dados para sistemas de agendamento baseados em correio e idiomas para e-mail ativo (computacional). (Observe que o email ativo envolve várias considerações de segurança, que são discutidas mais adiante neste memorando, particularmente no contexto de applicationPostScript.) As mensagens RFC padrão 822 são 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 usuário mais antigo, esse padrão é assumido. Na presença de um campo de cabeçalho MIME-Version, um agente de usuário de recebimento também pode assumir que o texto US-ASCII simples era a intenção dos remetentes. Na ausência de uma especificação MIME-Version, texto US-ASCII simples ainda deve ser assumido, mas a intenção 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 deverá crescer substancialmente. Quando um leitor de correio encontra correio com um valor de tipo de conteúdo desconhecido, ele geralmente deve tratá-lo como equivalente a applicationoctet-stream, conforme descrito posteriormente neste documento. Dados de Formulário HTML em ASP Web API: Upload de Arquivo e Multipart MIME Exemplo de um formulário HTML para carregar um arquivo: Este formulário contém um controle de entrada de texto e um controle de entrada de arquivo. Quando um formulário contém um controle de entrada de arquivo, o atributo enctype sempre deve ser quotmultipartform-dataquot, que especifica que o formulário será enviado como uma mensagem MIME multipart. O formato de uma mensagem MIME multipart é mais fácil de entender ao olhar para um exemplo de solicitação: Esta mensagem é dividida em duas partes. Um para cada controle de formulário. Os limites das partes são indicados pelas linhas que começam com traços. O limite de peça inclui um componente aleatório (quot41184676334quot) para garantir que a seqüência de limite não apareça acidentalmente dentro de uma parte de mensagem. Cada parte da mensagem contém um ou mais cabeçalhos, seguido do conteúdo da peça. O cabeçalho Content-Disposition inclui o nome do controle. Para arquivos, ele também contém o nome do arquivo. O cabeçalho Content-Type descreve os dados na peça. Se este cabeçalho é omitido, o padrão é textplain. No exemplo anterior, o usuário enviou um arquivo chamado GrandCanyon. jpg, com o tipo de conteúdo imagejpeg eo valor da entrada de texto foi quotSummer Vacationquot. Upload de arquivo agora vamos olhar para um controlador de API da Web que lê arquivos de uma mensagem MIME de várias partes. O controlador lerá os arquivos de forma assíncrona. A Web API suporta ações assíncronas usando o modelo de programação baseado em tarefas. Primeiro, aqui está o código se você estiver direcionando Framework 4.5, que suporta as palavras-chave async e await. Observe que a ação do controlador não tem parâmetros. Isso porque processamos o corpo de solicitação dentro da ação, sem invocar um formatador de tipo de mídia. O método IsMultipartContent verifica se a solicitação contém uma mensagem MIME de várias partes. Caso contrário, o controlador retornará o código de status HTTP 415 (Unsupported Media Type). A classe MultipartFormDataStreamProvider é um objeto auxiliar que aloca fluxos de arquivos para arquivos carregados. Para ler a mensagem MIME de várias partes, chamar o método ReadAsMultipartAsync. Esse método extrai todas as partes da mensagem e as grava nos fluxos fornecidos pelo MultipartFormDataStreamProvider. Quando o método for concluído, você pode obter informações sobre os arquivos da propriedade FileData, que é uma coleção de objetos MultipartFileData. MultipartFileData. FileName é o nome de arquivo local no servidor, onde o arquivo foi salvo. MultipartFileData. Headers contém o cabeçalho da peça (não o cabeçalho da solicitação). Você pode usar isso para acessar os cabeçalhos ContentDisposition e Content-Type. Como o nome sugere, ReadAsMultipartAsync é um método assíncrono. Para executar o trabalho após o término do método, use uma tarefa de continuação (4.0) ou a palavra-chave await (4.5). Aqui está a versão Framework 4.0 do código anterior: Reading Form Control Data O formulário HTML que mostrei anteriormente tinha um controle de entrada de texto. Você pode obter o valor do controle a partir da propriedade FormData do MultipartFormDataStreamProvider. FormData é um NameValueCollection que contém nomevalue pares para os controles de formulário. A coleção pode conter chaves duplicadas. Considere esta forma: O corpo de solicitação pode ter a seguinte aparência: Nesse caso, a coleção FormData conterá os seguintes pares keyvalue: viagem: opções de ida e volta: opções sem escalas: datas seat: window

No comments:

Post a Comment