У меня есть несколько документов .docx, сохраненных в папке конфигурации моего модуля wildfly one.Эти файлы не включены в файл war, они сохраняются локально в отдельной папке / configuration / some.Я использую вызов ajax для вызова служб REST Java.В пользовательском интерфейсе у меня есть список тегов привязки с именами файлов, в основном список всех файлов .docx.Когда я нажимаю на имена, файл документа должен быть загружен.
Я не могу внести изменения в отдельный файл wildfly для списка каталогов, так как он небезопасен.Я попытался загрузить, сделав ajax-вызов сервису, который возвращал файлы как объект, но это не сработало.Я попытался вызвать службу, указав URL-адрес непосредственно в свойстве href тега привязки, не используя вызов ajax, но он не работает, я могу вызывать только остальные службы, хотя вызовы ajax.Кто-нибудь может дать мне другое решение?
этот код для другого подхода, который я попробовал, но он потерпел неудачу, я был триен, чтобы отправить данные файла docx во внешний интерфейс и сделать другой файл docx во внешнем интерфейсе, но это не такрешить проблему
javaScript: 1.
success: function(data) {
var issueisolatationhtml;
if (data.output) {
relatedSOPS = data.output;
for (i = 0; i < relatedSOPS.length; i++) {
relatedSOPNames[i] = relatedSOPS[i].replace('.docx', '');
issueisolatationhtml = '<a href = "#" id="'+relatedSOPNames[i]+'" onclick="return forceDownloadSOP(this.innerHTML);" >'+relatedSOPS[i]+'</a></br>';
$('#diff-Sop-container').append(issueisolatationhtml);
}
}
2.
function forceDownloadSOP(filename) {
console.log("parameters passed:\n filename: " + filename);
let fileData = "";
fileData = "";
downloadSOPData(filename);
console.log("fileData: ");
console.log(fileData);
var type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
downloadFile(returnedString, filename, type);
}
function downloadFile(data, filename, type) {
console.log("passed parameters: ");
console.log(data);
console.log(filename);
console.log(type);
const a = document.createElement("a");
a.style.display = "none";
document.body.appendChild(a);
data = returnedString;
console.log("data assigned value of returnedString");
console.log(data);
a.href = window.URL.createObjectURL( new Blob([data], { type }));
a.setAttribute("download", filename);
a.click();
window.URL.revokeObjectURL(a.href);
document.body.removeChild(a);
}
function downloadSOPData(filename) {
console.log("downloading " + filename);
$.ajax({
url:"../eventmgmtrs/ticketFlow/downloadRelatedSOPS",
data: {
"filename" : filename
},
type:"get",
async: false,
success: function(responseData) {
console.log(responseData);
console.log("got response Data: " + responseData.output);
downloadPath = responseData.path;
console.log("DownloadPath: " + downloadPath);
returnedString = responseData.output;
console.log("returnedString assigned to : ");
console.log(returnedString);
// return responseData.output;
},
error: function(error) {
console.log("error while downloading");
console.log(error);
}
})
}
java:
@GET
@Path("/downloadRelatedSOPS")
@Produces(MediaType.APPLICATION_JSON)
public Response downloadRelatedSOPS(@QueryParam("filename") String filename, @Context HttpServletRequest request) {
System.out.println("downloadRelatedSOPS() called");
System.out.println("Parameter passed: filename = " + filename);
lOGGER.debug("Inside the downloadRelatedSOPS having filename: " + filename);
JSONObject storeCfg = ConfigManager.getConfig(Names.CONFIG_SOP);
System.out.println("storCfg created: " + storeCfg);
String absoluteFilePath = (String) storeCfg.get(Names.SOP_REPO_PATH);
System.out.println("absoluteFilePath: " + absoluteFilePath);
JSONObject resultjson = new JSONObject();
Response.Status status;
try {
File file = new File(absoluteFilePath + "/" + filename);
FileInputStream fileInputStream = new FileInputStream(file.getAbsolutePath());
XWPFDocument document = new XWPFDocument(fileInputStream);
List<XWPFParagraph> paragraphs = document.getParagraphs();
String str_data = "";
for (XWPFParagraph para : paragraphs) {
System.out.println("para: " + para.getText());
str_data += para.getText();
System.out.println("str_data: " + str_data);
}
System.out.println("data: " + str_data);
resultjson.put(Names.OUTPUT, str_data);
resultjson.put("path", absoluteFilePath + "/" + filename);
status = Response.Status.OK;
} catch (Exception e) {
e.printStackTrace();
System.out.println("catch error");
lOGGER.error("ERROR : Exception occurred while fetching SOPS" + e);
resultjson.put(Names.ERROR_MESSAGE, "Error fetching SOPS");
status = Response.Status.INTERNAL_SERVER_ERROR;
}
return Response.status(status)
.header(Names.ACCESS_CONTROL_ALLOW_ORIGIN, "*")
.header(Names.ACCESS_CONTROL_ALLOW_METHODS, "GET")
.entity(resultjson).build();
}
Ожидаемый результат в том, что файлы, находящиеся в этой локальной папке, должны быть загружены.и браузер должен разрешить загрузку.