我从简单的html表单上传图片
<form action="../OctetStreamReader" method="post" accept="image/gif, image/jpeg">
Your image: <input type="file" name="pic" id="pic" /><br />
<input type="submit" value="Submit" />
</form>
并且在OctetStreamReader内部我使用IOUtils
复制服务器上的图像realPath = getServletContext().getRealPath(DESTINATION_DIR_PATH) + "/";
PrintWriter writer = null;
InputStream is = null;
FileOutputStream fos = null;
try {
writer = response.getWriter();
} catch (IOException ex) {
log(OctetStreamReader.class.getName() + "has thrown an exception: "
+ ex.getMessage());
}
if (canInsert) {
// String filename = request.getHeader("X-File-Name");
String filename = utils.createFileName(ssn, userEmail, userId);
try {
ImageCompressor ic= new ImageCompressor();
is = request.getInputStream();
fos = new FileOutputStream(new File(realPath + filename));
logger.info("avalible bytes :" + is.available());
IOUtils.copy(is, fos);
logger.info("inserting copied");
代码在IE以外的所有浏览器中都运行得非常好,尤其是IE7。 在IE7的情况下,在服务器上创建一个新文件,但文件大小为0kb。 如果是其他浏览器,如chrome,FF,safari,则会根据上传图像的实际大小创建新文件。 我无法找出问题,因为代码没有抛出任何异常。
请帮助..
谢谢!
答案 0 :(得分:2)
您应该将enctype="multipart/form-data"
属性添加到表单元素。
答案 1 :(得分:0)
我尝试使用Apache Commons文件上传,它运行良好