1

我有一个允许用户将视频上传到服务器的应用程序,该过程的一部分是在客户端上创建一个缩略图,该缩略图将在服务器上加载时用于视频。我有一个可写的位图,我想将其转换为 jpeg 并上传到服务器。

是否可以在不先将 jpeg 保存到用户计算机的情况下执行此操作 - 我不想需要受信任的应用程序。是否可以先将其存储在隔离存储中,然后从那里上传,就好像它只是用户计算机上的另一个文件一样?

谢谢迈克尔

4

2 回答 2

2

您必须在上传之前保存文件,但当然可以将其保存到独立存储而不是一般文件系统。

有一个关于写入图像的独立存储的 Microsoft 快速入门。

图像名称和实际图像文件本身保存在独立存储中。图像名称保存在名为 userSettings 的设置中,键为 userImage。保存图像名称不是必需的,但为了方便而保存。图像文件保存在名为 Images 的目录中,名为 UserImageFile.jpg。

OpenFile方法;

使用指定的共享和访问选项打开指定路径的文件。此方法返回包含文件流的 IsolatedStorageFileStream 对象。

您可以下载一些代码来帮助您入门。

于 2010-11-30T20:47:44.327 回答
1

我实现了一个解决方案,允许我获取 WriteableBitmap,使用 FJCore 将其转换为 JPEG 并将其写入 MemoryStream 并将其发送到服务器。

FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, quality, stream);

请参阅:使用 FJCore 对 Silverlight WriteableBitmap 进行编码

然后我发现了一个很棒的 FileUploader 类,我对其进行了修改以上传 MemoryStream 以避免必须先创建本地文件。

原产地:

public void StartUpload(FileInfo file)

修改的:

public void StartUpload(Stream fileStream)

见: http: //www.codeproject.com/KB/silverlight/SL4FileUploadAnd_SL4_MVVM.aspx

在服务器上,我使用上面链接中描述的 FileUpload.ashx 来接受流的块并将它们写入服务器上的文件。

使用 HttpWebRequest 调用 FileUpload.ashx,MemoryStream 以块的形式向上发送,直到到达流的末尾。

当它们在服务器上接收到字节时,它们将被写出到指定位置的文件中。

  • 迈克尔
于 2011-01-15T19:22:28.497 回答