Javascript azure文件从客户端上载

Javascript azure文件从客户端上载,javascript,azure,cors,media,azure-media-services,Javascript,Azure,Cors,Media,Azure Media Services,我用样品做的 我还为此帐户启用CORS 您可以运行代码 我做错了什么?为什么我的文件不上传?我已经从我这边复制了这个问题。结果表明,您没有为SAS令牌指定足够的权限。对于上载操作,您需要在SAS令牌中指定“sp=rw”权限。 有关详细信息,请查看本文: 以下是我的测试,仅供参考: 场景1:无写权限生成SAS令牌 https://.blob.core.windows.net/test1/sample.mp4?sv=2014-02-14&sr=c&sig=XnmDhSnec43Mm06tXtRoqJ

我用样品做的

我还为此帐户启用CORS

您可以运行代码


我做错了什么?为什么我的文件不上传?

我已经从我这边复制了这个问题。结果表明,您没有为SAS令牌指定足够的权限。对于上载操作,您需要在SAS令牌中指定“sp=rw”权限。 有关详细信息,请查看本文:

以下是我的测试,仅供参考:

场景1:无写权限生成SAS令牌

https://.blob.core.windows.net/test1/sample.mp4?sv=2014-02-14&sr=c&sig=XnmDhSnec43Mm06tXtRoqJu8r3CPFXYbzE5%2FJW9c27Q%3D&st=2016-01-18T16%3A00%3A00Z&se=2016-01-26T16%3A00%3A00Z&sp=r

我得到了与您相同的404结果:

场景2:生成具有写入权限的SAS令牌

https://.blob.core.windows.net/test1/sample.mp4?sv=2014-02-14&sr=c&sig=vOYJfGN%2F0TJRGOIYQLWM%2FF7A4dkhrDyUChQlVbUN0%3D&st=2016-01-18T16%3A00%3A00Z&se=2016-01-26T16%3A00%3A00Z&sp=rw

请注意,SAS令牌中指定的参数“sp”表示您仅具有该令牌的读取权限,sp=r表示具有读取和写入权限。希望这对你有帮助

编辑:

只需共享可以轻松生成SAS令牌的工具。

您将收到一个
未找到资源(404)
错误。请检查您的存储帐户中是否存在blob容器(
asset-4205a03a-0d00-80c4-6d1d-f1e5bd379a7f
)?是的,它存在。。。我使用此链接进行上传我使用Azure Storage Explorer 6并生成此字符串,但此url仍具有相同的issue@Anri我刚刚尝试将文件上载到您提供的新SAS url,它可以正常工作,您可以从您的侧面进行验证(您可以在“blobhobeto”容器中看到一些名为stars.jpg的文件)。因此,新的URL对我来说似乎是正确的。你提到这个url仍然有一个相同的问题,你的意思是当你从你这边上传到这个url时仍然会出现404错误吗?我注意到您共享的代码与原始示例略有不同,但即使我将代码修改为您的代码,从我的角度来看,它仍然可以正常工作。将文件直接从客户端上载到azure是一种良好的做法,还是先将其放入我的服务器更安全?
reader.onloadend = function (evt) {
        if (evt.target.readyState == FileReader.DONE) { // DONE == 2

            submitUri = "https://mediasvclb3ql3sjdqfh8.blob.core.windows.net/asset-4205a03a-0d00-80c4-6d1d-f1e5bd379a7f/sample.mp4?sv=2012-02-12&sr=c&si=180e3bdd-0856-4001-85b5-9aa455505ca3&sig=y0PFiMampL7sscrdcxcm4itTHNNeXhVc0JJGxFNiVuc%3D&st=2016-01-17T18%3A05%3A20Z&se=2115-12-24T18%3A05%3A20Z";
            // var uri = submitUri;
            var uri = submitUri; //+ '&comp=block&blockid=' + blockIds[blockIds.length - 1];
            var requestData = new Uint8Array(evt.target.result);

            $.ajax({
                url: uri,
                type: "PUT",
                data: requestData,
                processData: false,
                beforeSend: function(xhr) {

                    xhr.setRequestHeader('content-type',    'application/octet-stream');
                    xhr.setRequestHeader('x-ms-version',    '2014-02-14');
                    xhr.setRequestHeader('x-ms-blob-type',  'BlockBlob');


                    // xhr.setRequestHeader('Content-Length', requestData.length);
                },
                success: function (data, status) {
                    console.log(data);
                    console.log(status);
                    bytesUploaded += requestData.length;
                    var percentComplete = ((parseFloat(bytesUploaded) / parseFloat(selectedFile.size)) * 100).toFixed(2);
                    $("#fileUploadProgress").text(percentComplete + " %");
                    uploadFileInBlocks();
                },
                error: function(xhr, desc, err) {
                    console.log(desc);
                    console.log(err);
                }
            });
        }
    };