首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java io FileNotFoundException

java io FileNotFoundException
EN

Stack Overflow用户
提问于 2019-05-16 15:17:52
回答 1查看 474关注 0票数 1

我正试着用JSP上传一张图片到MySQL数据库。但它以一个未找到文件的异常结束。我该如何解决这个问题?Servlet文件,异常和表在下面的.中.table

代码语言:javascript
复制
package com.imageUpload.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.imageUpload.utill.DbConnection;


@WebServlet("/ImageUpload")
public class ImageUpload extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name=request.getParameter("name");
        String image=request.getParameter("image");

        FileInputStream fis=new FileInputStream(new File(image));

        Connection con=DbConnection.getConnection();
        try {   
        PreparedStatement ps=con.prepareStatement
            ("insert into image(name,image)values(?,?)");
        ps.setString(1,name);
        ps.setBinaryStream(3, fis);
        int n = ps.executeUpdate();
        if(n>0) {
            response.getWriter().println("Successfully Uploaded!");
        }

        }catch(Exception e) {System.out.println("Image E: "+e);}
    }


}
代码语言:javascript
复制
Type Exception Report

Message WS_Logo-02 (1).jpg (The system cannot find the file specified)

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

java.io.FileNotFoundException: WS_Logo-02 (1).jpg (The system cannot find the file specified)
    java.io.FileInputStream.open0(Native Method)
    java.io.FileInputStream.open(FileInputStream.java:195)
    java.io.FileInputStream.<init>(FileInputStream.java:138)
    com.imageUpload.controller.ImageUpload.doPost(ImageUpload.java:27)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 15:32:45

方法request.getParameter()将返回字符串,但要获得实际的图像,需要获取文件部分输入流。然后,通过使用该部分,您可以在服务器上创建映像,并进一步将其作为二进制文件存储在数据库中。最有效的方法是将所有文件像S3存储桶一样存储在外部存储中,并将路径存储在数据库中。你可以试试下面的代码。

代码语言:javascript
复制
package com.imageUpload.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.imageUpload.utill.DbConnection;


@WebServlet("/ImageUpload")
@MultipartConfig
public class ImageUpload extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name=request.getParameter("name");

        InputStream uploadedInputStream = null;
        Part filePart = null;
        String image = "";
        filePart = request.getPart("image"); // Retrieves <input type="file" name="image">
            if (filePart != null) {
                image = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); //image->name
                uploadedInputStream = filePart.getInputStream();
            }

        FileInputStream fis=new FileInputStream(new File(image));

        Connection con=DbConnection.getConnection();
        try {   
        PreparedStatement ps=con.prepareStatement
            ("insert into image(name,image)values(?,?)");
        ps.setString(1,name);
        ps.setBinaryStream(3, fis);
        int n = ps.executeUpdate();
        if(n>0) {
            response.getWriter().println("Successfully Uploaded!");
        }

        }catch(Exception e) {System.out.println("Image E: "+e);}
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56162852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档