Android - 如何将动画 GIF 文件上传到 Parse Server
Android - How to upload an animated GIF file to Parse Server
我正在开发一个具有 Parse Server Android SDK
的应用程序,我知道如何将视频文件转换为 bytes[]
数组,这是我使用的代码:
private byte[] convertVideoToBytes(Uri uri){
byte[] videoBytes = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(new File(getRealPathFromURI(uri)));
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf)))
baos.write(buf, 0, n);
videoBytes = baos.toByteArray();
} catch (IOException e) { e.printStackTrace(); }
return videoBytes;
}
// GET VIDEO PATH AS A STRING -------------------------------------
public String getRealPathFromURI(Uri contentUri) {
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = ctx.getContentResolver().query(contentUri, filePathColumn, null, null, null);
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Log.i(TAG, "VIDEO PATH: " + filePath);
return filePath;
}
但是我无法上传 GIF 文件,我试过这段代码,但它没有任何作用,我的 .gif 文件的单元格在我的使用 saveInBackground()
:
在后台保存后数据库为空
Uri path = Uri.parse("android.resource://" + BuildConfig.APPLICATION_ID + "/" + R.drawable.my_animated_gif_from_drawable);
String gifPath = path.toString();
File file = new File(gifPath);
Log.i(TAG, "GIF PATH: " + file.getAbsolutePath());
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); }
out.flush();
byte[] bytes = out.toByteArray();
ParseFile gifFile = new ParseFile(gifName + ".gif", bytes);
bObj.put(BUZZ_GIF, gifFile);
} catch (FileNotFoundException ignored) {
} catch (IOException ignored) { }
有谁知道如何将 .gif 文件上传为 ParseFile,或者只是将其转换为 bytes[]
这样我就可以使用 新的 ParseFile 函数?
这里是上传gif文件到解析服务器的方法
File file = new File(path);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
out.flush();
byte[] bytes = out.toByteArray();
image = new ParseFile(name, bytes);
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}
if (imageAttached) {
String name = path.substring(path.lastIndexOf("/"));
image = new ParseFile(name, Util.convertBitmapToBytes(bitmap));
image.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
post.put(DuzooConstants.PARSE_POST_IMAGE, image);
post.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (dialog.isShowing())
dialog.dismiss();
}
});
post.saveInBackground();
}
}
});
} else {
post.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (dialog.isShowing())
dialog.dismiss();
returnToHomeActivity();
}
});
post.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
}
});
}
}
我正在开发一个具有 Parse Server Android SDK
的应用程序,我知道如何将视频文件转换为 bytes[]
数组,这是我使用的代码:
private byte[] convertVideoToBytes(Uri uri){
byte[] videoBytes = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(new File(getRealPathFromURI(uri)));
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf)))
baos.write(buf, 0, n);
videoBytes = baos.toByteArray();
} catch (IOException e) { e.printStackTrace(); }
return videoBytes;
}
// GET VIDEO PATH AS A STRING -------------------------------------
public String getRealPathFromURI(Uri contentUri) {
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = ctx.getContentResolver().query(contentUri, filePathColumn, null, null, null);
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Log.i(TAG, "VIDEO PATH: " + filePath);
return filePath;
}
但是我无法上传 GIF 文件,我试过这段代码,但它没有任何作用,我的 .gif 文件的单元格在我的使用 saveInBackground()
:
Uri path = Uri.parse("android.resource://" + BuildConfig.APPLICATION_ID + "/" + R.drawable.my_animated_gif_from_drawable);
String gifPath = path.toString();
File file = new File(gifPath);
Log.i(TAG, "GIF PATH: " + file.getAbsolutePath());
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0) { out.write(buff, 0, read); }
out.flush();
byte[] bytes = out.toByteArray();
ParseFile gifFile = new ParseFile(gifName + ".gif", bytes);
bObj.put(BUZZ_GIF, gifFile);
} catch (FileNotFoundException ignored) {
} catch (IOException ignored) { }
有谁知道如何将 .gif 文件上传为 ParseFile,或者只是将其转换为 bytes[]
这样我就可以使用 新的 ParseFile 函数?
这里是上传gif文件到解析服务器的方法
File file = new File(path);
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
int read;
byte[] buff = new byte[1024];
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
out.flush();
byte[] bytes = out.toByteArray();
image = new ParseFile(name, bytes);
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}
if (imageAttached) {
String name = path.substring(path.lastIndexOf("/"));
image = new ParseFile(name, Util.convertBitmapToBytes(bitmap));
image.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
post.put(DuzooConstants.PARSE_POST_IMAGE, image);
post.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (dialog.isShowing())
dialog.dismiss();
}
});
post.saveInBackground();
}
}
});
} else {
post.pinInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (dialog.isShowing())
dialog.dismiss();
returnToHomeActivity();
}
});
post.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
}
});
}
}