私は、ユーザーがファイル(docxまたはpdfファイル)をダウンロードできるWebサービスを持っています。コードのこの作品は、それを表す:jerseyとAjaxを使用してJerseyからファイルを取得する
他の側では@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();
}
、私はこの1つのようなjQueryの3生のAJAX呼び出しを使用して、プレーンなHTML + JSで記述されたクライアントを持っている:
$(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"*/
});
});
...
エンコーディングに関連するコード行をコメントアウトすると、何も変わりません。明らかに、私がダウンロードするファイルを提供するとき、ファイルは壊れています(ファイルは実際に17KBのときに25KBです)。
私は石鹸UIでそれを試してみました、私は別の出力を取得し、なぜ知っていませんでした:
私の質問は、私は私のAJAX呼び出しで何か間違ったことをやっているのですか?私が得たデータはバイナリであるようですが、Soap UIと比較してブラウザが違う理由はわかりません。