将图像插入MySQL数据库

时间:2015-03-02 21:06:37

标签: java mysql rest

我几天都在努力做到这一点,绝对无处可去。我知道可以做到,但是我一直在搜索SO以获得答案而没有任何工作。

  1. 使用我的REST客户端上传图片
  2. 将上传的图片插入MySQL数据库。
  3. 我尝试过: 关注Load_File doesn't work,我使用的是操作系统X,因此我不知道如何更改文件夹的所有权等...我该怎么做?我在上一篇文章中从未得到过有关此问题的答案。我该怎么做?

    我也尝试过另一种方式:http://examples.javacodegeeks.com/enterprise-java/rest/jersey/jersey-file-upload-example/

    这根本不起作用。我一直收到这篇文章中描述的错误:Jersey REST WS Error: "Missing dependency for method... at parameter at index X",但答案对我没有帮助,因为我还不知道它应该是什么......

    有人可以指导我完成它吗?

    我在Java中使用Jersey REST客户端。许多教程都提到了一个pom.xml文件,我没有或者知道它是什么。

    谢谢你, 奥马

    编辑: 这是文件上传:

    package com.omar.rest.apimethods;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import com.sun.jersey.core.header.FormDataContentDisposition;
    import com.sun.jersey.multipart.FormDataParam;
    
    
    @Path("/files")
    public class FileUpload {
    
    private String uploadLocationFolder = "/Users/Omar/Pictures/";
    
    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
            @FormDataParam("file") InputStream fileInputStream,
            @FormDataParam("file") FormDataContentDisposition contentDispositionHeader) {
    
        String filePath = "/Users/Omar/Pictures/"   + contentDispositionHeader.getFileName();
    
        // save the file to the server
        saveFile(fileInputStream, filePath);
    
        String output = "File saved to server location : " + filePath;
    
        return Response.status(200).entity(output).build();
    
    }
    
    // save uploaded file to a defined location on the server
    private void saveFile(InputStream uploadedInputStream,
            String serverLocation) {
    
        try {
            OutputStream outpuStream = new FileOutputStream(new File(serverLocation));
            int read = 0;
            byte[] bytes = new byte[1024];
    
            outpuStream = new FileOutputStream(new File(serverLocation));
            while ((read = uploadedInputStream.read(bytes)) != -1) {
                outpuStream.write(bytes, 0, read);
            }
            outpuStream.flush();
            outpuStream.close();
        } catch (IOException e) {
    
            e.printStackTrace();
        }
    
    }
    
    }
    

    My Jar List

    表格的模式(我为测试创建的模式): image_id:int auto-incrementing PK,picture:BLOB。 我可以把它作为一个文件链接,只是在我的网站上加载图像,但我甚至无法做到这一点。

1 个答案:

答案 0 :(得分:0)

我建议将您的图像存储在某种廉价,经过良好许可的平面存储(如网络存储)中,然后在数据库中存储该存储位置的路径。如果您将图像存储为blob,数据库将会执行与此类似的操作,但我相信将使数据库管理存储和检索这些图像会产生一些开销。这些图像将占用大量数据库的磁盘空间,如果要为图像添加更多空间,向平面存储添加空间应该比向数据库添加空间更容易。