image之如何使用 JSP -Servlet 和 EJB 3.0 上传图像

powertoolsteam 阅读:38 2024-08-30 09:31:06 评论:0

我想使用 JSP Servlet 和 ejb 3.0 上传图像

请您参考如下方法:

首先,要选择使用 JSP 上传的文件,您至少需要一个 HTML <input type="file">将显示文件浏览字段的元素。如 HTML forms spec 中所述您需要将请求方法设置为 POST并将请求编码为 multipart/form-data在父级 <form>元素。

<form action="upload" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit"> 
</form> 

因为Servlet 3.0之前的Servlet API默认不支持上述请求编码(我认为您没有使用它,因为 EJB 3.0 是 Java EE 5.0 的一部分,而 Java EE 5.0 又仅包含 Servlet 2.5),您不会在请求参数映射中看到任何内容。 request.getParameter("file")将返回null

要在 servlet 中检索上传的文件和其他请求参数,您需要解析 InputStream HttpServletRequest的你自己。幸运的是,有一个常用的 API 可以帮助您摆脱繁琐的工作:Apache Commons FileUpload .

List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
for (FileItem item : items) { 
    if (!item.isFormField()) { 
        // <input type="file"> 
        System.out.println("Field name: " + item.getFieldName()); 
        System.out.println("File name: " + item.getName()); 
        System.out.println("File size: " + item.getSize()); 
        System.out.println("File type: " + item.getContentType()); 
    } else { 
        // <input type="text|submit|hidden|password|button">, <select>, <textarea>, <button> 
        System.out.println("Field name: " + item.getFieldName()); 
        System.out.println("Field value: " + item.getString()); 
    }             
} 

基本上你只需要获取 InputStream来自FileItem对象并将其写入任何 OutputStream根据您的口味使用通常的Java IO方式。

InputStream content = item.getInputStream(); 

或者你也可以直接写:

item.write(new File("/uploads/filename.ext")); 

在他们的主页上,您可以在 User Guide 中找到大量代码示例以及重要的提示和技巧。和 Frequently Asked Questions部分。仔细阅读它们。


标签:Servlet
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号