簡體   English   中英

如何使用Restful webservice從android上傳圖片文件到mysql

[英]how to upload picture file to mysql from android using Restful webservice

我想使用RESTful服務從Android應用程序上傳圖像到mysql數據庫。 是他們的任何服務方和android端教程。請幫助提供RESTful和Android示例

預先感謝

教程將幫助您上傳圖像文件和

教程將幫助您將圖像寫入數據庫。

添加部分代碼:

用於文件上傳的Web服務:

@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

        String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();

        // save it
        writeToFile(uploadedInputStream, uploadedFileLocation);

        String output = "File uploaded to : " + uploadedFileLocation;

            /************************************************/ 
             // CALL THE IMAGE UPLOAD TO DB CODE HERE.
             // InsertImageTest.insertImage();
            /*************************************************/
        return Response.status(200).entity(output).build();

    }

    // save uploaded file to new location
    private void writeToFile(InputStream uploadedInputStream,
        String uploadedFileLocation) {

        try {
            OutputStream out = new FileOutputStream(new File(
                    uploadedFileLocation));
            int read = 0;
            byte[] bytes = new byte[1024];

            out = new FileOutputStream(new File(uploadedFileLocation));
            while ((read = uploadedInputStream.read(bytes)) != -1) {
                out.write(bytes, 0, read);
            }
            out.flush();
            out.close();
        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}

用於保存數據庫的圖像的JAVA代碼

public class InsertImageTest {

    /**
     * This is used to get the Connection
     * 
     * @return
     */
    public Connection getConnection() {
        Connection connection = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/technicalkeeda", "root", "");
        } catch (Exception e) {
            System.out.println("Error Occured While Getting the Connection: - "
                    + e);
        }
        return connection;
    }

    /**
     * Insert Image
     */
    public void insertImage() {
        Connection connection = null;
        PreparedStatement statement = null;
        FileInputStream inputStream = null;

        try {
            File image = new File("C:/honda.jpg");
            inputStream = new FileInputStream(image);
            connection = getConnection();
            statement = connection
                    .prepareStatement("insert into trn_imgs(img_title, img_data) "
                            + "values(?,?)");
            statement.setString(1, "Honda Car");
            statement.setBinaryStream(2, (InputStream) inputStream,
                    (int) (image.length()));

            statement.executeUpdate();
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: - " + e);
        } catch (SQLException e) {
            System.out.println("SQLException: - " + e);
        } finally {
            try {
                connection.close();
                statement.close();
            } catch (SQLException e) {
                System.out.println("SQLException Finally: - " + e);
            }
        }

    }

    /***
     * Execute Program
     * 
     * @param args
     * @throws SQLException
     */
    public static void main(String[] args) throws SQLException {
        InsertImageTest imageTest = new InsertImageTest();
        imageTest.insertImage();
    }

}

從android到Mysql服務器上傳任何文件的最好和最簡單的方法是使用FTP客戶端庫。 鏈接

找到ftp4j-1.6.jar文件並導入項目中

然后您可以通過以下代碼在服務器上上傳圖像。

public void upload(){


    FTPClient con = null;


        con = new FTPClient();
        con.connect("192.168.2.57"); // Your Server IP and Port you can use FTP domain credentials here also

        if (con.login("XXXXXXXXX", "XXXXX")) // FTP username and Pass
        {
            con.enterLocalPassiveMode(); // important!
            con.setFileType(FTP.BINARY_FILE_TYPE);
            String data = "/sdcard/vivekm4a.m4a"; // Your File Path

            FileInputStream in = new FileInputStream(new File(data));
            boolean result = con.storeFile("/vivekm4a.m4a", in);
            in.close();
            if (result) Log.v("upload result", "succeeded");
            con.logout();
            con.disconnect();
        }
    }

}

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM