我正在做项目在线图片库,我必须上传图片。我是用jsp / servlet做的,IDE是Eclipse。 我的Jsp文件如下
<form action="ActionPage" >
<input type="file" name="myFile">
<br>
<input type="submit">
</form>
这里的Actionpage是servlet。在单击“提交”按钮时,我希望所选文件存储在服务器上的WebContent和数据库表上的路径中名为“IMAGE”的文件夹中。 如果有人知道简单的解决方案,请分享。
提前谢谢。
答案 0 :(得分:0)
你可以在这里阅读这是怎么做的
How to upload files to server using JSP/Servlet?
PS:将上传的文件存储在应用程序目录中是BAD BAD BAD的想法。想想如果你的应用程序运行一段时间会发生什么,并且你想要重新部署,因为文件缺少一些html标记。您的容器将删除上传的目录! 尝试使用应用程序目录之外的文件夹,或使用数据库。
答案 1 :(得分:0)
如果您使用jsp开发网站,这是最简单的解决方案 首先,从用户那里获取输入,创建一个html或jsp页面,并在你的jsp / html页面中包含tis代码
首先下载
公地文件上传-1.2.2.jar
org.apache.commons.io.jar
并通过右键单击项目然后选择构建路径然后添加jar文件
将此jar添加到库中 `<form role="form" action="Upload.jsp" method="post"enctype="multipart/form-data">
<div class="btn btn-success btn-file">
<i class="fa fa-cloud-upload"></i>
Browse
<input type="file" name="file" />
</div>
<button type="submit" value="submit" name='submit'>submit</button>`
</form>
ENCTYPE = “多部分/格式数据” 这是必要的
现在创建一个名为upload.jsp的jsp(您可以使用目标jsp将我们的图像保存到任何名称的服务器,但记得将该名称放在上面的代码中
<%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.apache.commons.io.output.*" %>
<%
String userName = (String) session.getAttribute("User");
File file ;
int maxFileSize = 5000000 * 1024;
int maxMemSize = 5000000 * 1024;
ServletContext context = pageContext.getServletContext();
String filePath = context.getInitParameter("file-upload");
// Verify the content type
String contentType = request.getContentType();
if ((contentType.indexOf("multipart/form-data") >= 0)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// maximum size that will be stored in memory
factory.setSizeThreshold(maxMemSize);
// Location to save data that is larger than maxMemSize.
factory.setRepository(new File("C:\\Users\\"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// maximum file size to be uploaded.
upload.setSizeMax( maxFileSize );
try{
// Parse the request to get file items.
List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded file items
Iterator i = fileItems.iterator();
while ( i.hasNext () )
{
FileItem fi = (FileItem)i.next();
if ( !fi.isFormField () )
{
// Get the uploaded file parameters
String fieldName = fi.getFieldName();
String fileName = fi.getName();
boolean isInMemory = fi.isInMemory();
long sizeInBytes = fi.getSize();
// Write the file
if( fileName.lastIndexOf("\\") >= 0 ){
file = new File( filePath +
fileName.substring( fileName.lastIndexOf("\\"))) ;
}else{
file = new File( filePath +
fileName.substring(fileName.lastIndexOf("\\")+1)) ;
}
fi.write( file ) ;
request.setAttribute("Success", "Successfully Uploaded");
RequestDispatcher rd = request.getRequestDispatcher("/UploadFiles.jsp");
rd.forward(request, response);
}
}
}catch(Exception ex) {
System.out.println(ex);
}
}else{
request.setAttribute("Error", "Error!!");
RequestDispatcher rd =request.getRequestDispatcher("/UploadFiles.jsp");
rd.forward(request, response);
}
%>
请不要混淆只需复制此代码,一旦您完成此操作,我相信您将了解代码
现在你需要做的最后一件事就是在没有这个文件的情况下向web.xml添加一些内容然后创建它......
<context-param>
<description>Location to store uploaded file</description>
<param-name>file-upload</param-name>
<param-value>
C:\\Users\\
</param-value>
</context-param>
只需将上面的代码添加到web.xml,您就可以根据需要更改上传图片的地址(更改参数值)
如果您遇到任何问题,请告诉我