I would like to upload image to mysql database from android app using RESTful service. Is their any service side and android side tutorial.Please kindly help in providing RESTful and android samples
Thank in advance
I would like to upload image to mysql database from android app using RESTful service. Is their any service side and android side tutorial.Please kindly help in providing RESTful and android samples
Thank in advance
This Tutorial will help with uploading image files and
This tutorial will help you with writing images to database.
Adding parts of code:
Webservice for file upload:
@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 CODE FOR IMAGE SAVING TO DB
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();
}
}
The best and easy way to upload any file from android to Mysql server is via using FTP client Library. Link
Find the ftp4j-1.6.jar
file and import in your project
then you can upload image on your server via following code.
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();
}
}
}
Hope this Helps