2016-12-11 76 views
-1

${param.key}類似,是否有解釋使用無Java的EL的多部分/表單數據加密表單的方法?如何僅使用EL分析多部分表單數據

如果不可能,是否有解決方法將文件輸入包含在表單中而不使用多部分/表單數據加密?

回答

1

multipart/form-data用於上傳文件。這可能很大,上傳可能需要一段時間。爲了不阻止其他傳入的請求,處理可能是異步的。

使用Java:

@MultipartConfig

對於一個servlet接收的multipart/form-data的,你必須添加@MultipartConfig註釋在servlet的前面,以獲取值通過調用request.getParameter("notFileFieldName");來顯示純文本參數。否則,該調用將返回null。

但是對於文件及其內容,它並沒有以這種方式工作。

<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> 


文件名,內容類型,大小和內容可以由
request.getPart("theFileFieldName");

返回Part對象JSP可以在web.xml中添加以下snipplet檢索行<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。

相關問題