servletfileupload fileitem 0字节大小

时间:2018-07-10 08:29:30

标签: javascript java jsp multipartform-data jquery-file-upload

我正在使用一个Web应用程序,该应用程序需要使用iOS Safari上载PDF,JPEG,JPG或PNG。

我正在使用FormData通过jQuery Ajax上传多个文件。我在JavaScript文件中使用了以下代码。

function longPollUpload(array, index){
	var list = ['LIDC001', 'LIDC011', 'LIDC034', 'LIDC037', 'LIDC034a', 'LIDC035', 'LIDC036', 'LIDC014', 'LIDC002'];
	var data = array[index];
	
	jQuery.ajax({
	    url: contextPath + "/Upload2",
	    data: data,
	    cache: false,
	    contentType: false,
	    processData: false,
	    type: 'POST',
	    success: function(response){
	var responseText = JSON.parse(response);
	if (responseText.message == 'success') {	
	var item = list[index];
	$("#"+item).val(responseText[item] || "");        	
	   index++;
	   if (index < array.length) {
		 longPollUpload(array, index)
		 }else {
		 hideNotice();
		 showPdfReport();
		 saveMandatory();	
		 }
	} else {
	hideNotice();
	showAlert("Something went wrong!");
	}
	    }
	});
}

当我在发送请求之前检查FileList的值时,它具有文件名,大小等。但是当通过ServletFileUpload在控制器中解析请求时,我得到0字节的文件大小。我在控制器中使用了下面的代码。我想知道在iOS中上传时可能导致0字节文件大小的原因。我在Chrome桌面和Android上进行了测试,但是上传没有问题。

if (ServletFileUpload.isMultipartContent(request)) {
            try {
                if(SESSION != null && SESSION.getAttribute("companyCode") != null){
                    compName = (String) SESSION.getAttribute("companyCode");
                    List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                    Map<String, List<FileItem>>  = new HashMap<>();
                    for (FileItem items : multiparts) {
                        if (!items.isFormField()) {
                            String name = new File(items.getName()).getName();
                            if (!(name.equals(null) || name.equals(""))) {fileMap
                                String str[] = items.getFieldName().split("#");
                                String docTypeCode = str[3];
                                if(fileMap.get(docTypeCode) == null){
                                    List<FileItem> fileItemList = new ArrayList<>();
                                    fileItemList.add(items);
                                    fileMap.put(docTypeCode, fileItemList);
                                }
                                else {
                                    fileMap.get(docTypeCode).add(items);
                                }
                            }
                        }
                    }

0 个答案:

没有答案