如何将文件 jsp 页传递给操作类
How to pass a file jsp page to action Class?
JSP page:
<input type="file" name="scan_file" accept="application/pdf" id="scan_file" />
将文件传递给 java 类:
$.ajax({
type: "POST",
url: "bank_deposit1",
data: {
scan_file:$("#scan_file").val()
},
success: function(response)
{
alert("done");
},
error: function(e)
{
alert("fail");
}});
文件无法传递到 java 类中。为什么?
试试这个:
网页表单:
<form id="myForm" action="uploadFileData" method="post" enctype="multipart/form-data">
Enter Your Name:
<input type="text" name="yourname" id="yourname" /><br/>
Select Your Photoes:
<input type="file" name="file" id="file" />
<input type="submit" value="save profile" />
</form>
<div id="response"></div>
在 js 中,确实喜欢:
$('form#myForm').submit(function(event){
//disable the default form submission
event.preventDefault();
//grab all form data
var formData = new FormData($(this)[0]);
$.ajax({
url: $(this).attr('action'),
type: "POST",
cache: false,
processData: false,
contentType: false,
data: formData,
success: function (res) {
$("#response").text(res);
},
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus+' : '+ errorThrown);
}
});
});
然后在 servlet 中保存文件,如下所示:
@WebServlet("/uploadFileData")
@MultipartConfig //in order to let it recognize and support multipart/form-data requests and thus get getPart() to work
public class UploadFileData extends HttpServlet {
private static final long serialVersionUID = 1L;
private String UPLOAD_DIRECTORY;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
UPLOAD_DIRECTORY = "E:''";//request.getSession().getServletContext().getRealPath("/upload");
// Set response content type
response.setContentType("text/html");
String yourname = request.getParameter("yourname");
System.out.println(yourname);
Part filePart = request.getPart("file");
String fileName = getFileName(filePart);
System.out.println("fileName:"+fileName);
InputStream fileContent = filePart.getInputStream();
System.out.println("upload dir: "+UPLOAD_DIRECTORY);
File file = new File(UPLOAD_DIRECTORY+fileName);
try{
FileOutputStream fOutputStream = new FileOutputStream(file);
try{
byte[] bytes = new byte[8 * 1024];
int bytesRead;
while((bytesRead = fileContent.read(bytes)) != -1){
fOutputStream.write(bytes, 0, bytesRead);
}
System.out.println("file uploaded successfully..");
response.getWriter().println("file uploaded successfully..");
}finally{
fOutputStream.close();
}
}finally{
fileContent.close();
}
}
/**
* Utility method to extract file name from content-disposition.
* @param filePart
* @return file name
*/
private String getFileName(Part filePart) {
for(String cd: filePart.getHeader("content-disposition").split(";")){
if(cd.trim().startsWith("filename")){
String fileName = cd.substring(cd.indexOf('=')+1).trim().replace("'"", "");
return fileName.substring(fileName.lastIndexOf('/') + 1).substring(fileName.lastIndexOf('''') + 1); // MSIE fix.
}
}
return null;
}
}
有关参考,请参阅此答案
相关文章:
- 无法执行文件.退出Acrobat PDF中的操作
- Redux:为什么不把操作和reducer放在同一个文件中呢
- javascript下载一个文件并执行提交操作
- 我如何从javascript文件中AJAX发布到MVC操作
- 我无法在操作方法中将我的文件传递给 httppostedfilebase
- 当我在操作属性中写入页面名称时,文件图像不会上传
- 在rails中操作上传的svg文件
- 带有所有用户操作的业务逻辑的Javascript配置文件
- 如何将HTML页面操作的范围限定为JS/Coffee文件中的唯一UserId
- 选择文件时的操作
- 如何将JavaScript文件路径映射到ASP.Net MVC控制器操作
- 只有最后一个文件是通过迭代形式.submit()操作下载的
- 将JSON从索引操作服务到公用文件夹中的index.html
- nodejs:原子文件替换操作,只触发一次一些观察者
- 将java脚本变量传递给相同的表单操作php文件参数
- 使用 1 个浏览操作更新 2 个输入文件类型字段
- 在浏览器上传后操作文件对象的正文
- 找不到将隐藏值传递给操作文件的方法
- 通过雷鸟扩展操作文件系统
- 使用Javascript或jQuery操作文件