我需要从表单中获取上传的输入文件并将其保存到mysql数据库中。在这里,我无法从请求对象中获取输入文件。
我的servlet:
@Component(service = Servlet.class, property = {
"service.description=" + "************** Servlet",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.paths=" + "/bin/uploadtestservlet" })
public class UploadTestServlet extends SlingAllMethodsServlet{
@Reference
UploadAdmissionFormService uploadService;
private static final long serialVersionUID = 1L;
private final Logger LOGGER = LoggerFactory
.getLogger(UploadTestServlet .class);
protected void doPost(SlingHttpServletRequest request,
SlingHttpServletResponse response) {
try{
if(ServletFileUpload.isMultipartContent(request)){
List<File> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for(File item : multiparts){
LOGGER.info("Name :::"+new File(item.getName()).getName()); //
}
}catch(Exception e){
}
}
我的js:
$("#uploadSubmit").click(function(e) {
$.ajax({
type: "POST",
url: "/bin/uploadAdmissionForm",
data: 'passport=' +$('#uploadPhoto').get(0).files.item(0),
success: function(msg) {
},
});
});
HTML:
<form method="POST" enctype="multipart/form-data" id="upload-details-form">
<input type="file" name="uploadPhoto" id="uploadPhoto" class="uploadPhoto">
<div class="upload-photo">
<div class="upload-photo-content">
<h4>UPLOAD PHOTO</h4>
<p>Upload your recent passport size (3.5 x 4.5cm) color photograph (format should be jpg, gif, png, jpeg, bmp and maximum file size alloted is 1 MB)</p>
</div></div><form>
异常:
Exception occurred in doPost :the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded; charset=UTF-8
即使我在表单级别添加了enctype="multipart/form-data"
,这个错误也会被抛出。有人可以帮我这里。感谢
答案 0 :(得分:0)
您的ajax未指定文件。您必须在方法中添加 processData:false,contentType:false 。
$("#uploadSubmit").click(function(e) {
$.ajax({
type: "POST",
url: "/bin/uploadAdmissionForm",
data: new FormData( this ), //this is needed
processData: false, //this is needed
success: function(data) {
//handle return here
},
contentType: false //this is needed
});
});
以下是一些关于它的链接: