javascript - 如何在不使用 HTML5 中的输入文件的情况下上传在 java 中创建的文件

标签 javascript java ajax html wcf

各位,我想知道如何在 HTML5 中上传文件,没有输入文件,或者至少没有点击它。如果有一种无需点击和搜索即可将其放入的方法,我想听听。

问题是,在 HTML5 中,我有一个表格,单击它会打开一个带有信息的模式,该信息由 AJAX 发送到 .jsp 文件,我在其中使用该信息在特定路径中创建 PDF。我想使用相同的文件通过 WCF 服务上传它,但我所能做的就是创建它,然后使用输入文件查找它,但我想在没有输入文件的情况下使用它。

这是我的一些代码...

我创建 PDF 文件的 JSP 文件:

<%
String idP = request.getParameter("idP");
String nombreP = request.getParameter("NombreP");
String nombreC = request.getParameter("NombreC");
String presupuesto = request.getParameter("Presupuesto");
String avance = request.getParameter("Avacne");
String empleado = request.getParameter("Empleado");
String constructora = request.getParameter("Constructora");
String idC = request.getParameter("idC");
String idE = request.getParameter("idE");
String idT = request.getParameter("idT");

Font GreenFont = FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new CMYKColor(0, 0, 255, 0));
Font yellowFont = FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new CMYKColor(255, 0, 255, 0));
String path = "E:" + File.separator + "Reportes" + File.separator + "Reporte " + nombreP + ".pdf";
Document document = new Document();
File file = new File(path);
try {
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file.getPath()));
    document.open();

    Paragraph chapterTitle = new Paragraph(nombreP, yellowFont);
    Chapter chapter1 = new Chapter(chapterTitle, 1);
    chapter1.setNumberDepth(0);
    document.add(chapter1);

    document.add(new Paragraph("Nombre cliente:" + nombreC));
    document.add(new Paragraph("Presupuesto: $" + presupuesto));
    document.add(new Paragraph("Avance del proyecto: %" + avance));
    document.add(new Paragraph("Nombre del empleado: " + empleado));
    document.add(new Paragraph("Constructora: " + constructora));
    document.add(new Paragraph("Id_Proyecto: " + idP));
    document.add(new Paragraph("Id_Constructora: " + idC));
    document.add(new Paragraph("Id_Empleado: " + idE));
    document.add(new Paragraph("Id_Tipo: " + idT));

    document.addAuthor("Erick Adahir");
    document.addCreationDate();
    document.addCreator("LorCyC");
    document.addTitle("AVAVAGO");
    document.addSubject("Un simple ejemplo");

    document.close();
    writer.close();
} catch (DocumentException e) {
    e.printStackTrace();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
%>

调用JSP的函数:

function agregarEventoDoubleClickEnTablaProyecto()
{
$('#tablaProyecto td').dblclick(function ()
{
    var $this = $(this);

    var row = $this.closest("tr"); //Hacemos referencia al registro padre de la celda
    //alert(row.find('td:eq(0)').text());
    //row.find('td:firs').text();

    alert("PDF");
    $.ajax({
        url: "Proyecto/creaPDF.jsp",            
        data: {                
            idP: id,
            NombreP: row.find('td:eq(1)').text(),
            NombreC: row.find('td:eq(2)').text(),
            Presupuesto: row.find('td:eq(3)').text(),
            Avance: row.find('td:eq(4)').text(),
            Tipo: row.find('td:eq(5)').text(),
            Empleado: row.find('td:eq(6)').text(),
            Constructora: row.find('td:eq(7)').text(),
            idC: row.find('td:eq(8)').text(),
            idE: row.find('td:eq(9)').text(),
            idT: row.find('td:eq(10)').text()
        }            
    }).done(function (data) {
        alert("nice...");
    });
    $('#areaDatosProyecto').modal({
        show: 'true'
    });
});
}

最后,使用输入文件上传文件的函数:

function subir() {
            var archivo = document.getElementById("btnFile").files[0];
            alert(archivo);
            var fr = new FileReader();
            fr.onload = function () {
                var bString = this.result;                 
                var objUp = {
                    elemento: {
                        NombreOriginal: "nombre",
                        Documento: bString.split("base64,")[1]
                    }
                };
                $.ajax({
                    url: "http://localhost:84/Uploader/ServicioUploader.svc/ArchivarDocumento",
                    data: JSON.stringify(objUp),
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=UTF-8",
                    success: function (data) {
                        var id = data.d;
                        alert(id);
                    },
                    error: function (xnr, status, error) {
                        alert("XNR: " + xnr + ", STATUS: " + status + ", ERROR: " + error);
                    }
                });
            };
            fr.readAsDataURL(archivo);
        }

希望有人能帮帮我!谢谢!

最佳答案

您正在 JSP 中创建文件。 这意味着它应该在托管服务器的路径 (E:/Reportes/Reporte/[your filename].pdf) 上创建。

您可以在 JSP 本身(创建文件对象的位置)中编写上传代码。

我看不到两个 AJAX 调用的意义。

关于javascript - 如何在不使用 HTML5 中的输入文件的情况下上传在 java 中创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37152718/

相关文章:

javascript getDay() 在美国返回错误的日期数字,但在印度返回正确的值

javascript - $.mobile.changePage 在多页中无法正常工作

java - 在 Java 中禁用退格键

javascript - 仅在选中复选框时显示数据

Javascript 正则表达式返回 null 但它不应该。为什么?

javascript - 我可以将媒体对象从 ionic 转换为 Blob 吗?

java - 使用 Jersey : FormDataContentDisposition is null 上传文件

java - java读取二维数组文本文件

javascript - 如何为views.py中的对象创建属性,以便将更改后的对象传递给JS代码

javascript - AngularJS 为什么从函数返回 bool 与属性不同?