【问题标题】:Downloading a file from an Amazon shared link从 Amazon 共享链接下载文件
【发布时间】:2019-01-17 03:41:43
【问题描述】:

我的任务是找到一种方法来保存文件,给出指向某人亚马逊存储桶的链接。这些文件是上传到票务系统的附件,当我使用他们的 API 提取票时,我会得到一个类似下面的链接(我删除了所有私人内容并替换为 XXXXX)

https://s3.amazonaws.com/cdn.XXXXXXX.com/data/helpdesk/attachments/production/36012348362/original/1.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=XXXXXXXXXXXXXXXXXFus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180808T205357Z&X-Amz-Expires=86400&X-Amz-Signature=XXXXXXXXXXXXXX-Amz-SignedHeaders=Host

如您所见,链接在 1 天后超时。我将 2 个 API 连接在一起,我需要能够将实际文件上传到第二个 API,而不是仅仅放置一天后超时的链接。我曾尝试使用 Webclient downloadfileAsync,但我得到的只是一个空白文件输出。我可以转到浏览器中的链接并右键单击,将图像另存为,所以我知道它是可能的,但我没有以编程方式获得任何运气。以下是我目前用来尝试下载的代码片段。

using (WebClient wc = new WebClient())
{                    
    wc.DownloadFileAsync(new System.Uri(url), "image.jpg");
}

任何见解或帮助都会很棒。

提前致谢!

【问题讨论】:

  • 我曾经遇到过类似的问题,以编程方式下载一些东西 - 它在浏览器中工作,但不是来自我的代码。我发现我必须欺骗我的请求的用户代理,以便服务器将我视为浏览器。
  • 这听起来很有希望,你是如何欺骗服务器认为你是浏览器的?
  • 文件是否为空,因为您在异步下载完成之前对其进行了查询?
  • 我也想过这种可能性,我只是在文件资源管理器中查看文件的大小。不过,我给了它一分钟左右的时间。我将使用非异步运行进行测试,看看会发生什么......好吧,我试过了。成功了!!!!

标签: c# amazon-web-services amazon-s3


【解决方案1】:

我能够通过不使用异步版本的 DownloadFile 来完成这项工作。感谢所有帮助我解决这个问题的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2023-03-31
    • 2014-02-14
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2017-11-04
    相关资源
    最近更新 更多