Java 使用htm输入类型=文件存储图像
您好,我正在构建一个web应用程序(在线商店),管理员可以在其中上传新产品。 输入类型之一是文件(产品图像) 我希望产品的图像存储在一个文件夹中,每个产品都会在数据库表中关联一个图像 我的问题是,输入类型=文件是如何工作的?我仍然不明白,当我提交表单时,servlet将如何将图像粘贴到网页文件夹中,以及如何获取值(图像名称)以存储在数据库表中 对于其他输入,我使用“值”获取信息Java 使用htm输入类型=文件存储图像,java,html,jsp,file-upload,input,Java,Html,Jsp,File Upload,Input,您好,我正在构建一个web应用程序(在线商店),管理员可以在其中上传新产品。 输入类型之一是文件(产品图像) 我希望产品的图像存储在一个文件夹中,每个产品都会在数据库表中关联一个图像 我的问题是,输入类型=文件是如何工作的?我仍然不明白,当我提交表单时,servlet将如何将图像粘贴到网页文件夹中,以及如何获取值(图像名称)以存储在数据库表中 对于其他输入,我使用“值”获取信息 谢谢 将文件上载到web服务器时,通常会包含以下信息(或类似信息): filename包含文件名或完整路径,具体取决于
谢谢 将文件上载到web服务器时,通常会包含以下信息(或类似信息):
filename
包含文件名或完整路径,具体取决于浏览器
如果您使用类似的程序,您可以准确地看到上载文件时发生的情况。将文件上载到web服务器时,通常会包含以下信息(或类似信息):
filename
包含文件名或完整路径,具体取决于浏览器
如果使用这样的程序,您可以准确地看到上载文件时发生的情况。在java中,很难处理文件上载。但是有很多图书馆可以做到这一点。最受欢迎的一个示例是关于如何在java中实现这一点的示例:
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(yourMaxMemorySize);
factory.setRepository(yourTempDirectory);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(yourMaxRequestSize);
// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
还有更多的选项可供选择。在java中,处理文件上传很难。但是有很多图书馆可以做到这一点。最受欢迎的一个示例是关于如何在java中实现这一点的示例:
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(yourMaxMemorySize);
factory.setRepository(yourTempDirectory);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(yourMaxRequestSize);
// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
有很多选择,你应该玩转
输入类型=文件是如何工作的
这将用于带有多部分/表单数据的
编码中。一旦选择了文件并提交了表单,那么文件内容就成为HTTP请求主体的一部分。在servlet中,它通过request.getInputStream()
作为“原始”数据提供。在只支持Servlet2.5或更早版本的servletcontainers中,没有API提供的工具来解析数据。这是事实上的标准。自servlet 3.0以来,您可以使用提供的APIrequest.getParts()
来实现这一点,该API使用Commons FileUpload的许可副本
另见:
我仍然不明白,当我提交表单时,servlet将如何将图像粘贴到网页文件夹中,以及如何获取值(图像名称)以存储在数据库表中
您不仅应该对文件名感兴趣。您还应该对文件内容感兴趣。无论您选择何种方式从请求正文中解析上传的文件,最终的文件内容都应该是InputStream
或byte[]
的风格。您可以使用FileOutputStream
将其写入本地磁盘文件系统,并以通常的JDBC方式将唯一文件名存储在数据库中
另见:
- -消除一个重大误解
输入类型=文件是如何工作的
这将用于带有多部分/表单数据的
编码中。一旦选择了文件并提交了表单,那么文件内容就成为HTTP请求主体的一部分。在servlet中,它通过request.getInputStream()
作为“原始”数据提供。在只支持Servlet2.5或更早版本的servletcontainers中,没有API提供的工具来解析数据。这是事实上的标准。自servlet 3.0以来,您可以使用提供的APIrequest.getParts()
来实现这一点,该API使用Commons FileUpload的许可副本
另见:
我仍然不明白,当我提交表单时,servlet将如何将图像粘贴到网页文件夹中,以及如何获取值(图像名称)以存储在数据库表中
您不仅应该对文件名感兴趣。您还应该对文件内容感兴趣。无论您选择何种方式从请求正文中解析上传的文件,最终的文件内容都应该是InputStream
或byte[]
的风格。您可以使用FileOutputStream
将其写入本地磁盘文件系统,并以通常的JDBC方式将唯一文件名存储在数据库中
另见:
- -消除一个重大误解
如果您使用的是PHP:Retaged as per OP's comments below(Java)@查看您是否使用的是PHP:Retaged as per OP's comments below(Java)@查看一旦您有了文件,顺便说一句,您可以将其写入(文件)并保存到任何地方。这并不难。它只是在3.0版之前才内置在标准ServletAPI中。在Java中使用第三方库就像在classpath.Yep中删除JAR文件一样简单。如果你使用maven,那就更容易了。我是说没有第三方很难做到这一点。顺便说一下,一旦你有了文件,你就可以写(文件)并将其保存到任何地方。这并不难。它只是在3.0版之前才内置在标准ServletAPI中。在Java中使用第三方库就像在classpath.Yep中删除JAR文件一样简单。如果你使用maven,那就更容易了。我是说没有第三方很难做到这一点。