사용자가 파일 (docx 또는 pdf 파일)을 다운로드 할 수있는 웹 서비스가 있습니다. 이 코드 조각이 나타냅니다jersey와 Ajax를 사용하여 Jersey에서 파일 가져 오기
$(document).ready(function(e){
$("#dale").click(function(e){
e.preventDefault();
var tgt = "resources/documentos/explicacionOperador/explicacion_operador_ticket_666.docx";
$.ajax({
url: tgt,
type: 'GET',
//mimeType: "application/octet-stream",
//contentType: 'application/octet-stream; charset=ISO-8859-1',
//async: true,
processData: false,
success: //download.bind(true, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "explicacion_operador_ticket_666.docx"),
function(data){
console.log(data);
},
error: function(data){
var elError = "Error al hacer la llamada a " + tgt + ": " + data;
console.log(elError);
console.log(data);
alert(elError);
},
headers: {
nombre_apellidos: "Mike Poborsky",
domicilio: "St. Mary 4",
codigo_postal: "194",
localidad: "Julapa",
provincia: "Asada",
linea: "SB64533",
operador: "Julandrin",
mensaje: "Recarga no funciona"
}/*,
scriptCharset: "ISO-8859-1"*/
});
});
...
: 다른 측면에서
@GET
@Path("explicacionOperador/explicacion_operador_ticket_{id_ticket}.pdf")
@Produces("application/pdf")
public Response generarDocumentoExplicacionOperadorPostPdf(
@PathParam("id_ticket") String pTicketId,
@HeaderParam("nombre_apellidos") String nombre_apellidos,
@HeaderParam("domicilio") String domicilio,
@HeaderParam("codigo_postal") String codigo_postal,
@HeaderParam("localidad") String localidad,
@HeaderParam("provincia") String provincia,
@HeaderParam("linea") String linea,
@HeaderParam("operador") String operador,
@HeaderParam("mensaje") String mensaje
) throws IOException, ConfigurationException, URISyntaxException, FormatoNoSoportadoException{
ETipoDocumento tipo = FormatoNoSoportadoException.testFormato("pdf");
File documentoExplicacionOperador = this.generalService.getDocumentoExplicacionOperador(
tipo,
pTicketId,
nombre_apellidos,
domicilio,
codigo_postal,
localidad,
provincia,
linea,
operador,
mensaje);
return Response
.ok(documentoExplicacionOperador, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=\"" + documentoExplicacionOperador.getName() + "\"")
.header("Charset", "ISO-8859-1")
.build();
}
을, 나는이 같은 jQuery를 3 원시 아약스 호출을 사용하여 일반 HTML + JS로 작성된 클라이언트를 가지고 이를 실행하면 다음과 같은 메시지가 콘솔에 출력됩니다.
인코딩과 관련된 코드 줄을 주석 처리해도 아무런 변화가 없습니다. 다운로드 할 파일을 제공 할 때 파일이 손상된 것입니다 (실제로 17KB 일 때 파일 크기는 25KB입니다). 나는 다른 출력을 얻을 이유
나는 모르고, 비누 UI에서 그것을 시도했습니다 내 질문이 내 아약스 호출에서 뭔가 잘못하고있는 중이 야한다
? 내가 얻은 데이터는 바이너리 인 것처럼 보이지만 브라우저에서 비누 UI와 다른 점이 무엇인지 모르겠습니다.