我正在尝试保存使用FileOpenPicker选择的图像。我在选择图像时正在吃这个事件
async void photoChooserTask_Completed(object sender, PhotoResult e)
{
// get the file stream and file name
Stream photoStream = e.ChosenPhoto;
string fileName = Path.GetFileName(e.OriginalFileName);
// persist data into isolated storage
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
using (Stream current = await file.OpenStreamForWriteAsync())
{
await photoStream.CopyToAsync(current);
}
}
但是这段代码会给我保存文件的长度返回0
var properties = await file.GetBasicPropertiesAsync();
i = properties.Size;
我在保存图片时做错了吗?
答案 0 :(得分:2)
您可能需要刷新流。
如果这不起作用,请添加一个断点并检查两个流'复制后的长度。他们是平等的吗?他们应该是。那两个流对象有什么可疑的东西吗?
修改强>
在您发布的图像上,我可以看到您使用BitmapImage的SetSource方法和您复制的相同Stream。一旦你这样做,Stream的位置就会结束,因为它只是通过那个电话来阅读。
CopyToAsync会复制您调用它的当前位置后的所有内容。由于位置在最后,因为它刚刚被读取,因此CopyToAsync不会复制anthing。
要解决问题,您需要做的就是将流的位置设置为0。
答案 1 :(得分:0)
这是我的截图,它看起来和你的截图相同,但结果却不同