Modo de implementação de compactação z para FTP usando C#
Pergunta
Estou tentando implementar a compactação do Modo Z para FTP usando C# para um cliente FTP que escrevi. Meu entendimento é que o modo Z usa a mesma compressão que o Zlib. Não posso obter o Zlib.net do Componentace para o trabalho. Ele invade a última parte do arquivo após o upload para um servidor Filezilla FTP. Onde estão as especificações para o modo z? Alguém mais teve problemas com o Zlib.net? A deflate na estrutura do .NET também não é compatível com o modo Z.
Solução
Eu não acho que o modo compactado FTP tenha chegado a uma RFC ainda. Existe um (expirado)Rascunho da Internet De setembro de 2005.
Você pode tentar enviar um e -mail para um dos autores para o status atual se você ficar realmente preso (consulte a Seção 7, Endereços dos autores).
RFCs 1950 e 1951 (Zlib e esvaziar respectivamente) também podem ser úteis para você para depuração de baixo nível. Não entendo completamente o relacionamento desses dois RFCs, no entanto, a Seção 3.3.1 dos estados do rascunho da Internet acima:
Todos os processos de FTP que suportam o modo de transmissão deflatam deve suportar o formato de dados comprimido do ZLIB especificado na RFC 1950 [5].
Portanto, certamente parece que você está usando o componente C# correto.
Seria bom confirmar onde está ocorrendo o truncamento: você tem certeza de que está na biblioteca de compressão? Você pode despejar os dados compactados antes de fazer o upload? Você pode assistir os bytes passarem por cima do fio? Você pode rastrear o lado do servidor para ver se ele recebe o arquivo inteiro (mas depois trunca)?
Outras dicas
Se você deseja uma biblioteca FTP barata que suporta o modo Z, tente edtftpnet/express. Você pode até comprar o código -fonte se quiser dar uma olhada em como implementamos a compactação com o zlib.net.