开发移动应用程序时上传文件到CDN的最佳实践是什么?

4

我正在制作移动应用程序。我使用Azure移动服务作为构建移动应用程序的后端服务。在移动应用中,我需要上传图片到Azure云存储。我可以通过两种方法来实现。

  1. 从客户端应用程序上传文件

  2. 通过发送文件的字节数组或base64字符串将文件上传到服务器,然后服务器将文件上传到Azure云存储

我认为第一种方法比较好,因为它直接上传文件,而不是先将文件发送到服务器,再由服务器上传到Azure云存储。

我不知道哪种方法更好。任何帮助都将不胜感激。


1
你的标题提到了CDN,但是你的问题并没有提到CDN。另外,在第一项中你所指的内容不太清楚:你是在询问客户端应用程序直接连接并上传到Azure Storage吗?无论如何,询问哪种方法是“最好的”是一个与主题无关的问题,因为它只会得到意见。而且,这个问题本身就非常广泛。在这个问题被关闭之前,请编辑你的问题,使其成为一个具体的编程问题(并澄清我提出的问题)。 - David Makogon
1
@DavidMakogon,如果您看到了问题,我已经提到了Azure云存储,它是CDN :) - Narendra
3个回答

3
正如David所提到的,这个问题有点宽泛,与CDN无关,但在Azure移动服务范围内,我建议选择选项#1,因为它提供了一些好处,包括(但不限于):
- 最小化Mobile Service上的负载,可能避免需要扩展服务以跟上文件管理的需求 - 能够使用专门设计用于客户端的存储API来处理blob管理,避免必须实现和维护类似的API作为服务的一部分(包括支持恢复上传/下载和其他适用于移动应用的不错功能) - 能够更容易地使用Azure Storage提供的不同地理位置,使客户端能够使用最近的位置上传和下载文件。
等等。
建议仍然是从您的服务中公开API,以允许客户端请求SAS令牌,以便提供对存储的身份验证访问。这种方法类似于Mobile Apps File Management SDK所使用的方法。
希望这可以帮助您!

0

你可以使用像Filestack这样的第三方服务处理上传和存储文件以及CDN传输。

你也可以通过选择并存储方法直接上传文件到Azure:

filepicker.pickAndStore(
  {
    mimetype:"image/*",
    multiple: true
  },
  {
    location:"azure"
  },
  function(Blobs){
    console.log(JSON.stringify(Blobs));
  },
  function(error){
//  console.log(JSON.stringify(error)); - print errors to console
  },
  function(progress){
    console.log(JSON.stringify(progress));
  }
);

然后每个上传的文件都会生成一个CDN URL,您可以在应用程序中使用它来传递图像。不确定您是否已经研究过要使用哪个CDN,但是Filestack与Fastly合作,因此您拥有他们所有的功能,这是最好的之一。


-2

我使用Cloudinary作为网站或移动应用程序开发的图像后端,它非常容易将图像上传到CDN。


这远非“最佳实践” - 这是对第三方服务的推广。而且基于个人观点。并没有回答问题。 - David Makogon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接