我正在开发一个应用程序来上传文件,安装此应用程序的人必须能够下载和查看这些文件

时间:2016-02-05 07:17:53

标签: android database android-sqlite

正如问题标题所说,任何人都可以帮助我如何将任何类型的文件上传到android中的数据库

我试过上传图片..

//我们要从

下载的地方
URL url = new URL(IMAGE_URL);  //http://example.com/image.jpg
//open the connection
URLConnection ucon = url.openConnection();
//buffer the download
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is,128);
ByteArrayBuffer baf = new ByteArrayBuffer(128);
//get the bytes one by one
int current = 0;
while ((current = bis.read()) != -1) {
        baf.append((byte) current);
}

//store the data as a ByteArray
//db is a SQLiteDatabase object
ContentValues dataToInsert = new ContentValues();                          
dataToInsert.put(TABLE_FIELD,baf.toByteArray());
db.insert(TABLE_NAME, null, dataToInsert);
And this is how you get the data back and convert it into a Bitmap:

//select the data
Cursor cursor = db.query(TABLE_STATIONLIST, new String[] {TABLE_FIELD},
                                                null, null, null, null, null);
//get it as a ByteArray
byte[] imageByteArray=cursor.getBlob(1);
//the cursor is not needed anymore
cursor.close();

//convert it back to an image
ByteArrayInputStream imageStream = new ByteArrayInputStream(mybyte);
Bitmap theImage = BitmapFactory.decodeStream(imageStream));

2 个答案:

答案 0 :(得分:1)

Android有一个私人目录,可用于存储数据(如图像)和其他应用无法看到。它安全且符合新的Android 6权限系统(您不需要请求write_storage权限)。

在我看来,在Android中保存图像并不是一个好习惯,因为你的应用程序有一个私人目录(保存sqlite的地方......)并且更容易获取/保存数据

在这篇文章Saving and Reading Bitmaps/Images from Internal memory in Android中,你可以看到如何做到这一点。

答案 1 :(得分:0)

在Android上存储文件是一种不好的做法,因为Android的存储空间有限。如果您想下载图像,只需从服务器上的图像URL下载它。当文件上传到服务器上时,如果您愿意,则生成一个唯一的URL使用下载它。