如何仅使用EL解析多部分表单数据

时间:2016-12-11 10:36:54

标签: jsp el multipartform-data

class= 类似,有没有办法在没有Java的情况下使用EL解释多部分/表格数据加密表格?

如果不可能,是否有解决方法在表单中包含文件输入而不使用multipart / form-data加密?

1 个答案:

答案 0 :(得分:1)

multipart/form-data用于上传文件。这可能很大,上传可能需要一段时间。为了不阻止其他传入请求,处理可以是异步的。

使用Java:

<强> @MultipartConfig

对于接收multipart / form-data的servlet,您必须在servlet前面添加@MultipartConfig注释,以便通过调用request.getParameter("notFileFieldName");来获取纯文本参数的值。否则调用将返回null。

但是对于文件及其内容,它并没有以这种方式工作 可以从由
返回的Part对象中检索文件名,内容类型,大小和内容 request.getPart("theFileFieldName");

对于JSP,您可以在web.xml中添加以下snipplet:

<servlet>
    <servlet-name>UploadFile</servlet-name>
    <jsp-file>/path/form.jsp</jsp-file>
    <multipart-config></multipart-config>
</servlet>
<servlet-mapping>
    <servlet-name>UploadFile</servlet-name>
    <url-pattern>/path/form.jsp</url-pattern>
</servlet-mapping>

<multipart-config></multipart-config>激活JSP的上述行为 因此,${param.notFileFieldName}将被评估其价值 但不是${param.theFileFieldName}

AsyncContext 可用于处理上传

但你不是一个java解决方案。

使用Javascript:FileReader()

如何在客户端读取文件的基本示例。 (没有上传) 资料来源:https://developer.mozilla.org/de/docs/Web/API/FileReader/readAsDataURL

HTML

<input type="file" onchange="previewFile()"><br>
<img src="" height="200" alt="Image preview...">

JavaScript的:

function previewFile() {
  var preview = document.querySelector('img');
  var file    = document.querySelector('input[type=file]').files[0];
  var reader  = new FileReader();

  reader.addEventListener("load", function () {
    preview.src = reader.result;
  }, false);

  if (file) {
    reader.readAsDataURL(file);
  }
}

try it on jsfiddle

如果需要上传,可以完成AJAX。