文件从应用程序上传到云而不暴露凭据

时间:2013-01-07 19:19:25

标签: c# file-upload cloud storage

我有一个面向最终用户的图片上传应用程序(C#桌面),我想切换到云(存储)(VPS是昂贵的,无限的托管服务提供商不允许图像托管脚本)。 为了做到这一点,我需要在我的应用程序中嵌入登录凭据(交付给最终用户),并根据更改更新它们。因此,由于安全原因(破解和上传不是图像的内容),它不是我的解决方案。

一种解决方案是托管PHP脚本,以便我的应用程序上传到该脚本(检查它是否是图像),而不是将该图像重新上传到云存储。问题是,我使用双倍带宽。

是否有任何云托管模式可以让我(不支付双倍带宽或运行PHP应用程序或其他物理的额外费用)或如何“隐藏”信用卡?

我每天约有5000名uniqe访客,每个时刻约有70名在线用户(谷歌分析)。我在一个免费的应用程序中提供免费服务,没有添加,所以我没有收入,我真的会尝试保持这样的最小的托管成本:(

1 个答案:

答案 0 :(得分:2)

试用Google App Engine和Blobstore。它相对容易使用(对不起,没有PHP支持!)并且可以免费达到指定的限制,因此您可以开发而无需花费。

https://developers.google.com/appengine/docs/python/blobstore/overview

工作原理:

  1. 您的C#应用​​程序获取一个只返回URL的简短Python脚本 包含随机密钥(Google提供您的Python脚本)

  2. 您的C#app使用适当的mime类型POST到该URL。

  3. 上传后,您的C#应用​​会重定向到最终到达网址 完成。该URL将再次成为Python脚本 然后记录上传的URL(以及任何元数据)以防止它成为孤儿。

  4. 使用Google App Engine的另一个优势是,它们提供将在其末端处理的图像变换(裁剪,缩放) - 例如,您可以要求缩略图,而无需先下载完整尺寸的图像。

    对于第3步,您可以将URL(实际上只是blobstore条目ID)记录到主应用程序中。关键是:你不想丢失那个随机密钥,因为这是检索图像文件的唯一方法。