Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何轮询已签名的url?_Javascript_Amazon Web Services_Polling - Fatal编程技术网

Javascript 如何轮询已签名的url?

Javascript 如何轮询已签名的url?,javascript,amazon-web-services,polling,Javascript,Amazon Web Services,Polling,我需要使用javascript轮询图像,并在找到图像后执行操作。以下是我正在使用的代码: pollUpload(file) { const stopTime = Number(new Date()) + (1000 * 60) const check = (resolve, reject) => { setTimeout(() => { const img = new Image()

我需要使用javascript轮询图像,并在找到图像后执行操作。以下是我正在使用的代码:

    pollUpload(file) {
        const stopTime = Number(new Date()) + (1000 * 60)
        const check = (resolve, reject) => {
            setTimeout(() => {
                const img = new Image()
                img.onload = resolve
                img.onerror = () => {
                    if (Number(new Date()) < stopTime) check(resolve, reject)
                    else reject(new Error('Timed out'))
                }
                img.src = file
            }, 1000)
        }
        return new Promise(check)           
    },
pollUpload(文件){
const stopTime=编号(新日期())+(1000*60)
常量检查=(解析、拒绝)=>{
设置超时(()=>{
常量img=新图像()
img.onload=解析
img.onerror=()=>{
如果(编号(新日期())
这是可行的,但我遇到了一个问题,在第一次GET(404)之后,响应会被缓存,后续请求不会每次都被发送。所以它可能需要一段时间才能起作用

对此的标准解决方案只是在querystring中附加一个时间戳。然而,我的问题是:这些图像使用aws签名的URL进行保护。因此url需要与aws生成的表单完全匹配,并且不能附加任何随机信息


在这种情况下,有没有其他建议的方法可以防止缓存损坏的url?

我可以礼貌地问一下,为什么要轮询已签名的url?如果你能解释你的情况,我们可能会提供一种不需要这种轮询的替代方法(例如使用队列)。@John-当然可以。这是图像上载脚本的一部分。上传请求被发送到服务器,服务器用生成的s3上传url和(要上传的)图像的url进行响应。一旦图像从浏览器上传到s3,就会触发lambda,负责图像处理并将图像文件移动到最终目的地。我认为可以设置SQS的长轮询,以了解作业何时完成。然而,我希望可以直接轮询图像url,因为这似乎更简单。(如果可以工作)那么,上述代码是否正在等待上传完成,以便触发Lambda函数进行图像处理?还是轮询最终目的地以获得后处理的图片?第二种情况——在图像上传到s3后立即开始轮询最终目的地,以便在lambda完成后获得处理后的图像。上传到s3会自动触发lambda。