Android 从Firebase存储下载文件会更改其名称
每当我将文件从Firebase存储下载到Android设备时,文件名都会更改,即从filename.pdf更改为filename-13557732.pdf 有没有办法阻止这种变化?为什么会发生这种情况Android 从Firebase存储下载文件会更改其名称,android,firebase,firebase-storage,Android,Firebase,Firebase Storage,每当我将文件从Firebase存储下载到Android设备时,文件名都会更改,即从filename.pdf更改为filename-13557732.pdf 有没有办法阻止这种变化?为什么会发生这种情况 File directory = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()); final File localF
File directory = new File(Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath());
final File localFile = File.createTempFile(filename,".pdf", directory);
mStorageReference.child(filename).getFile(localFile)
另外,有没有办法下载带有URL(我已经有了)而没有名称的文件?Q:如何更改createTempFile中的默认名称 答案是: 你不能 如果可以,您将使createTempFile的保证失效,根据javadoc,该保证是: 在调用此方法之前,由返回的抽象路径名表示的文件不存在,并且 在虚拟机的当前调用中,此方法及其任何变体都不会再次返回相同的抽象路径名。 如果您关心文件名,可能createTempFile()不是创建文件的合适方法 您可以找出系统临时文件目录是什么,并在那里创建自己的文件,但您必须自己管理文件名冲突的可能性 使用createTempFile的另一种策略取决于您使用该文件的目的,以及为什么您关心它的名称,而您不说明它的名称 问:有没有一种方法可以使用URL下载这个文件 答案是肯定的 有不同的方法可以做到这一点。检查 简单地说就是这样
private FirebaseStorage storageRef = FirebaseStorage.getInstance();
storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL for 'users/me/profile.png'
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
私有FirebaseStorage storageRef=FirebaseStorage.getInstance();
storageRef.child(“users/me/profile.png”).getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
//已获取“users/me/profile.png”的下载URL
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理任何错误
}
});
你可以使用,毕加索或滑翔。或者简单地创建自己处理URL的方法。它可能会说URI,但实际上是URL。Q:如何更改createTempFile中的默认名称 答案是: 你不能 如果可以,您将使createTempFile的保证失效,根据javadoc,该保证是: 在调用此方法之前,由返回的抽象路径名表示的文件不存在,并且 在虚拟机的当前调用中,此方法及其任何变体都不会再次返回相同的抽象路径名。 如果您关心文件名,可能createTempFile()不是创建文件的合适方法 您可以找出系统临时文件目录是什么,并在那里创建自己的文件,但您必须自己管理文件名冲突的可能性 使用createTempFile的另一种策略取决于您使用该文件的目的,以及为什么您关心它的名称,而您不说明它的名称 问:有没有一种方法可以使用URL下载这个文件 答案是肯定的 有不同的方法可以做到这一点。检查 简单地说就是这样
private FirebaseStorage storageRef = FirebaseStorage.getInstance();
storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL for 'users/me/profile.png'
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
私有FirebaseStorage storageRef=FirebaseStorage.getInstance();
storageRef.child(“users/me/profile.png”).getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
//已获取“users/me/profile.png”的下载URL
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
//处理任何错误
}
});
你可以使用,毕加索或滑翔。或者简单地创建自己处理URL的方法。它可能会说URI,但实际上是URL。如何下载?它是您开发的应用程序的一部分,还是您以普通用户的身份使用设备并触发系统下载管理器?它是我开发的应用程序的一部分。您如何下载?它是您开发的应用程序的一部分,还是您以普通用户的身份使用设备并触发系统下载管理器?它是我开发的应用程序的一部分。