将图片和Mp3从库保存到Android内部存储目录

时间:2018-10-23 13:11:23

标签: java android android-studio bitmap mediastore

因此,我正在做一个大学项目,允许用户从相机/画廊中选择图像,然后还选择mp3。我想将这两个选定的文件保存到具有相同名称的内部存储目录中(只有扩展名.mp3 / .jpg会有所不同)

我设法获得了创建文件夹的代码以及从相机/画廊中获取图像的方法,但是我似乎无法弄清楚如何将其保存到内部存储目录或如何在同一目录中获取mp3。方式。

创建文件夹的代码

var formData = new FormData();
var imagefile = document.querySelector("input[name='featureimage[]']");
formData.append("featureimage[]", imagefile.files);
for(var key in  imagefile.files) {
  alert(key);
  console.log(key);
  formData.append("featureimage", imagefile.files[key]);
}

从MediaStore获取图像的代码:

try{ File folder = new File(Environment.getExternalStorageDirectory() + "/InkousticMedia");
        boolean success = true;
        if (!folder.exists()) {
            success = folder.mkdir();
        }


    }catch (Exception e){
        Log.e("MODEL", "ERROR: " + e.toString());
    }

我看过堆栈上的其他类似问题,但是它们都相差很大,而且没有具体答案,因此我似乎无法解决,可以将mp3和图像都保存到目录中。

1 个答案:

答案 0 :(得分:1)

这是我用来保存图像的代码,请检查此github存储库https://github.com/Rawkush/Status-Saver

                File f1,f2;
                f1 = new File(uri.toString());
                String fname = f1.getName();
                f2 = new File(Environment.getExternalStorageDirectory()+"/YOUR_FOLDER/");
                f2.mkdirs();

                try {
                    FileUtils.copyFileToDirectory(f1,f2);
                    ContentValues values =new ContentValues();
                    values.put(MediaStore.Images.Media.DATE_TAKEN,System.currentTimeMillis());
                    values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
                    values.put(MediaStore.MediaColumns.DATA,f2.toString()+"/"+fname);
                    getContext().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
                } catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(getContext(),e.getMessage(),Toast.LENGTH_LONG).show();
                }finally {
                    Toast.makeText(getContext(),"Saved",Toast.LENGTH_LONG).show();
                }