Um usuário perguntou ?
Gostaria de adicionar uma nova solicitação de recurso para melhorar as opções de determinados downloads para permitir que os administradores especifiquem se desejam que o cabeçalho de remoção use conteúdo “inline” em vez de “anexo” para permitir que o navegador abra o arquivo no navegador ( se o navegador suportar o tipo de arquivo).
O caso de uso específico em que estou interessado é permitir que um PDF seja aberto no navegador em vez de forçar o usuário a baixar constantemente o arquivo. Nosso PDF mudará com o tempo e não queremos que os usuários baixem cópias do arquivo repetidamente se precisarem ver apenas uma versão dele.
Eu verifiquei o código do plugin e parece que as informações post_meta podem ser passadas para a função sdm_dispatch_file e essa função pode verificar se o download “inline” ou “attachment” deve ser usado no cabeçalho de remoção de conteúdo.
*** Atualização *** Percebi que imediatamente após configurar a remoção de conteúdo para “inline”, acho que o cabeçalho “content-type” precisa ser modificado para que o tipo mime do arquivo possa ser retornado ao navegador sabe pelo navegador que tipo de arquivo é. Isso provavelmente adiciona muita complexidade para alterar o valor do cabeçalho de “attachment” para “inline”, mas nós agradecemos!
Peço desculpas se este não é o processo adequado para enviar solicitações de recursos; Não consegui encontrar nenhuma documentação detalhando o processo de inscrição.
Obrigado pelo seu tempo!
Este tópico foi modificado 2 anos, 1 mês atrás por. Este tópico foi modificado 2 anos, 1 mês atrás por.
(@mbrsolution)
2 anos, 1 mês atrás
Olá, por favor verifique o seguinte documentação. Por favor, deixe-me saber se isso é o que você quer dizer também.
Obrigado
lançador de tópicos
(@aceberle)
2 anos, 1 mês atrás
Oi, obrigado pela sua resposta. Infelizmente, não estou falando em abrir o download em uma nova janela, o que ainda deixa a caixa de diálogo de download visível.
Quero impedir que a caixa de diálogo de download apareça e, em vez disso, mostrar ao navegador o conteúdo do arquivo. Por exemplo, o google chrome suporta nativamente o formato de arquivo pdf e exibirá pdf no navegador se o cabeçalho de remoção de conteúdo estiver definido como “inline” e o cabeçalho do tipo de conteúdo estiver definido como “application/pdf”. Infelizmente, o plug-in está atualmente codificado para cabeçalhos de remoção de conteúdo de “anexo” e gravação de conteúdo de “fluxo de aplicativo/octeto”, o que força a caixa de diálogo de download a estar presente mesmo que o navegador possa gravar arquivos de manipulação nativamente. .
Esta resposta foi modificada há 2 anos, um mês atrás por.
(@mbrsolution)
2 anos, 1 mês atrás
Olá, eu vejo o que você quer dizer. Os desenvolvedores de plug-ins continuarão investigando o aplicativo.
Obrigado
(@mra13)
2 anos, 1 mês atrás
Há um gancho de ação que você pode usar para substituir completamente o endereço de download. Então você pode enviar como quiser.
Consulte o link da atividade de gerenciamento de download na documentação a seguir:
lançador de tópicos
(@aceberle)
2 anos, 1 mês atrás
Obrigado pela sua resposta! Eu vi o gancho de ação e estou usando-o como solução atual. Infelizmente este hook é grande o suficiente e para usá-lo eu tenho que copiar muito do código do plugin original, como chamar o filtro a ser usado ou redirecionar o render do php e então executar a resposta sin apropriada. Vou fazer minhas alterações e voltar com um arquivo de patch com uma atualização planejada.
Obrigado novamente
(@mra13)
2 anos, 1 mês atrás
Sinta-se à vontade para sugerir outra ação ou gancho de filtro que possamos adicionar ao plug-in (se isso ajudar você a obter um melhor controle).
lançador de tópicos
(@aceberle)
2 anos, 1 mês atrás
Seria útil se você colocasse o modo “sdm_dispatch_file” em sdm-download-request-handler.php, colocasse todos os cabeçalhos em uma linha com pares nome/valor para os nomes e valores do cabeçalho, então filtre o gancho e passe o nome de arquivo e ID de publicação. Podemos adicionar, remover ou substituir a carga útil do arquivo com base em quaisquer metadados adicionais que possamos anexar à postagem.
Assim:
function sdm_dispatch_file($filename, $download_id) {
if (headers_sent()) {
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, headers already sent.");
return;
}
if (!is_readable($filename)) {
trigger_error(__FUNCTION__ . ": Cannot dispatch file $filename, file is not readable.");
return;
}
$headers = array(
'Content-Description' => 'File Transfer',
'Content-Type' => 'application/octet-stream', //
'Content-Disposition' => 'attachment; filename="' . basename($filename) . '"',
'Expires' => '0',
'Cache-Control' => 'must-revalidate',
'Pragma' => 'public',
'Content-Length: ' => filesize($filename)
);
$headers = apply_filters('sdm_dispatch_download_headers', $headers, $download_id, $filename);
foreach ($headers as $name => $value) {
header("$name: $value");
}
ob_end_clean();
readfile($filename);
exit;
}
Isto foi útil?
0 / 0