C# 将文件从本地文件夹上载到firebase
我无法将用户存储在本地文件夹中的文件(.mp3)上载到firebase。 以下是从本地文件夹检索文件的方式:C# 将文件从本地文件夹上载到firebase,c#,uwp,firebase-storage,C#,Uwp,Firebase Storage,我无法将用户存储在本地文件夹中的文件(.mp3)上载到firebase。 以下是从本地文件夹检索文件的方式: StorageFolder folder = ApplicationData.Current.LocalFolder; var songfolder = await folder.GetFolderAsync("Songs"); StorageFile mp3file = await songfolder.GetFileAsync(mp3fileforupload); Storag
StorageFolder folder = ApplicationData.Current.LocalFolder;
var songfolder = await folder.GetFolderAsync("Songs");
StorageFile mp3file = await songfolder.GetFileAsync(mp3fileforupload);
StorageFolder folder = ApplicationData.Current.LocalFolder;
var songfolder = await folder.GetFolderAsync("Songs");
StorageFile mp3file = await songfolder.GetFileAsync(mp3fileforupload);
这就是我创建文件流文件并上传的方式:
var stream = File.Open(mp3file.Path, FileMode.Open);
var task = new FirebaseStorage("-my-bucket-.appspot.com")
.Child("songs")
.Child(new_song_id)
.PutAsync(stream);
task.Progress.ProgressChanged += (s, f) => uploadProgress(f.Percentage);
var downloadurl = await task;
Debug.WriteLine("DOWNLOAD_URL " + downloadurl);
文件无法上载。从文档中,该文件应作为文件流上载。这在从“资源”文件夹上载文件时起作用,但不适用于本地文件夹中的文件。我尝试过从最常用的列表上传,但仍然无法上传。知道为什么会失败吗?试试这个打开文件
Windows.Storage.StorageFolder storageFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile sampleFile =
await storageFolder.GetFileAsync(mp3file.Path);
var stream = await sampleFile.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
Step Up Labs C#Firebase存储API使用流进行文件上传。文件应作为流上载。对我有效的是使用内存流
首先,我从本地文件夹检索文件:
StorageFolder folder = ApplicationData.Current.LocalFolder;
var songfolder = await folder.GetFolderAsync("Songs");
StorageFile mp3file = await songfolder.GetFileAsync(mp3fileforupload);
StorageFolder folder = ApplicationData.Current.LocalFolder;
var songfolder = await folder.GetFolderAsync("Songs");
StorageFile mp3file = await songfolder.GetFileAsync(mp3fileforupload);
然后,我使用DataReader读取文件的字节:
byte[] fileBytes = null;
using (IRandomAccessStreamWithContentType stream = await mp3file.OpenReadAsync())
{
fileBytes = new byte[stream.Size];
using (DataReader reader = new DataReader(stream))
{
await reader.LoadAsync((uint)stream.Size);
reader.ReadBytes(fileBytes);
}
}
然后我使用MemoryStream进行上传:
Stream stream = new MemoryStream(fileBytes);
var task = new FirebaseStorage("-my-bucket-.appspot.com")
.Child("songs")
.Child(new_song_id)
.PutAsync(stream);
task.Progress.ProgressChanged += (s, f) => uploadProgress(f.Percentage);
var downloadurl = await task;
这就成功了。文件已上载。它可以工作,但即使它从本地文件夹获取文件,仍然无法上载。我认为这与流媒体有关。