作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的表单,enctype 为“multipart”;我正在使用它来将图像上传到我的服务器。我有两种可能的解决方案,但它们都不完整。
第一种解决方案:
FileItemIterator iterator = upload.getItemIterator( request );
while( iterator.hasNext() ){
FileItemStream item = iterator.next();
if( item.isFormField() ){
// store IMG
}
} // ~while( iter.hasNext() )
在此解决方案中,我无法获取上传文件的尺寸,但我可以获取它是否为表单字段(使用 item.isFormField()
)
我的第二个解决方案使用 Servlet 3.0 API:
for( Part part: request.getParts() ){
System.out.println( part.getSize() );
}
这里可以获取到上传图片的大小,但是无法判断是不是简单的表单域。
我错过了什么?
你需要什么帮助我?
最佳答案
如 FileItemStream 的文档中所述
isFormField()方法判断这是否是一个简单的表单字段返回 true ,否则返回 false 。
所以上传图片会返回false
所以你应该做以下事情:
if(! item.isFormField() ){
// store IMG
}else {
//simple form field.
}
并引用这个答案here查看如何将 InputStream 转换为 byte[] 以了解上传文件中有多少字节。
如果您使用的是 servlet 3,请执行以下操作:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username= request.getParameter("username"); // Retrieves <input type="text" name="username">
Part filePart = request.getPart("file"); // Retrieves <input type="file" name="file">
String filename = filePart.getName();
InputStream filecontent = filePart.getInputStream();
// ... (do your job here)
}
并给我一些反馈。
希望对您有所帮助。
关于java - 使用 Servlet 3.0 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21484223/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!