0

このタスクを実行するのに問題がありました。少し助けてください。

JSP/Java サーブレットを使用して、ファイル システムから MYSQL DB に画像をアップロードしようとしています。

imagesフォルダにファイルがあります。ファイルを読み取り、バイトに変換し、outputStream を取得することになっていることはわかっていますが、そうするのはほとんど運がありませんでした (そして、私の試みは列車事故だったので、コードを投稿していません)。ファイルが outputStream に入った後、SQL ステートメントを ? パラメータですが、ここまで到達できません。

どんな助けでも大歓迎です。

4

2 に答える 2

0

従う必要がある手順 1. メイン ビューで input type="file" タグを使用します。2.DiskFileItemFactory を使用して、アップロードされたファイルのすべてのバイトを読み取ります 3.サーバーのフォルダーにファイルを保持します 4.このフォルダーの場所からファイル名を使用してファイルを識別し、この使用 blob のために MySql DB に保存します 5.からファイルを直接選択しないでくださいローカル システムと DB に保存する場合、まずサーバーにアップロードしてから DAO 操作を実行する必要があります

于 2013-03-27T05:29:28.107 に答える
0

public class UploadFilesServlet extends HttpServlet {

public void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
res.setContentType("text/html");
PrintWriter pw=res.getWriter();


try
{
//step1
DiskFileItemFactory df=new DiskFileItemFactory();
//step2
df.setSizeThreshold(10000); //setting buffersize    
String temp=getServletContext().getRealPath("/WEB-INF/temp");
df.setRepository(new File(temp)); //if buffer crossed comes into the temp
//step3
ServletFileUpload sf=new ServletFileUpload(df);
//step4
List<FileItem> items=(List<FileItem>)sf.parseRequest(req);
//step5
for(FileItem item: items)
{
if(item.isFormField())
{
//this item is a simple text field
String name=item.getFieldName();
String value=item.getString();
pw.println(name+"="+value+"<br/>");
}
else
{
//this is a file
String name=item.getFieldName();
String fileName=item.getName();


if(fileName.lastIndexOf('\\')!=-1)
fileName=fileName.substring(fileName.lastIndexOf('\\')+1);

fileName=getServletContext().getRealPath("/WEB-INF/upload/"+fileName);
item.write(new File(fileName));
pw.println("file:"+fileName+"saved</br>");
      BlobDemo.saveFile(fileName);

}//else
}//for

}catch(Exception e){e.printStackTrace(); }
    }
    }

このコードはクライアントのファイルを WEB_INF/upload フォルダーに配置し、ファイルのアップロード後に同じパスを使用してファイルを見つけ、ストリームと BLOB データ型を使用してファイルをそのファイル名で保存します。

public class BlobDemo {
private static String url = "jdbc:oracle:thin:@localhost:1521:xe";
private static String username = "kodejava";
private static String password = "welcome";

public static void saveFile(String fileName)throws Exception {
    Connection conn = null;
    FileInputStream fis = null;
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        conn = DriverManager.getConnection(url, username, password);
        conn.setAutoCommit(false);

        String sql = "INSERT INTO Files_Table(name,  file) VALUES (?, ?)";
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.setString(1, fileName);


        File file = new File("WEB-INF\\upload\\"+fileName);
        fis = new FileInputStream(file);
        stmt.setBinaryStream(2, fis, (int) file.length());
        stmt.execute();

        conn.commit();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (fis != null) {
            fis.close();
        }
        if (conn != null && !conn.isClosed()) {
            conn.close();
        }
    }
}

}

于 2013-03-27T05:39:20.740 に答える