Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Php 字段中的Unicode代码序列格式不正确_Php_Amazon S3 - Fatal编程技术网

Php 字段中的Unicode代码序列格式不正确

Php 字段中的Unicode代码序列格式不正确,php,amazon-s3,Php,Amazon S3,我正在尝试使用POST表单将浏览器上载到我的s3存储桶。我正在使用生成策略和签名。这是我的代码: $upload = new Signature( self::S3_KEY, self::S3_SECRET, self::S3_BUCKET, self::S3_REGION ); 并使用$upload->getFormInputsAsHtml()方法生成html。这就是生成这样的ht

我正在尝试使用POST表单将浏览器上载到我的s3存储桶。我正在使用生成策略和签名。这是我的代码:

$upload = new Signature(
            self::S3_KEY,
            self::S3_SECRET,
            self::S3_BUCKET,
            self::S3_REGION
        );
并使用
$upload->getFormInputsAsHtml()
方法生成html。这就是生成这样的html

<form action="//s3.amazonaws.com/bucket" method="POST" enctype="multipart/form-data" class="upload-form">
    <input type="hidden" name="Content-Type" value="">
    <input type="hidden" name="acl" value="public-read">
    <input type="hidden" name="success_action_status" value="201">
    <input type="hidden" name="policy" value="eyJleHBpcmF0aW9uIjoiMjAxNy0wMi0xNVQxMzowNDozOFoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJ0YWdmaSJ9LHsiYWNsIjoicHJpdmF0ZSJ9LFsic3RhcnRzLXdpdGgiLCIka2V5IiwiIl0sWyJzdGFydHMtd2l0aCIsIiRDb250ZW50LVR5cGUiLCIiXSxbImNvbnRlbnQtbGVuZ3RoLXJhbmdlIiwwLDUyNDI4ODAwMF0seyJzdWNjNzX2FjdGlvbl9zdGF0dXMiOiIyMDEifSx7IngtYW16LWNyZWRlbnRpYWwiOiJBS0lBSkhGS0hKMklLNjZTVFA0QVwvMjAxNzAyMTVcL3VzLWVhc3QtMVwvczNcL2F3czRfcmVxdWVzdCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsieC1hbXotZGF0ZSI6IjIwMTcwMjE1VDA3MDQzOFoifV19">
    <input type="hidden" name="X-amz-credential" value="AKIAJHFKHJ2IK66STP4A/20170215/us-east-1/s3/aws4_request">
    <input type="hidden" name="X-amz-algorithm" value="AWS4-HMAC-SHA256">
    <input type="hidden" name="X-amz-date" value="20170215T070438Z">
    <input type="hidden" name="X-amz-signature" value="e9d30613e4fcab8fec3fe75c4ce2969bb6497d83af7cca7f9ea6a1c0738844c5">
    <input type="hidden" name="key" value="${filename}">
</form>
示例请求有效负载

------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“image”;filename=“shop small.png”内容类型: 图像/png

------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“内容类型”

------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“acl”

私人的 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“成功\行动\状态”

201 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“策略”

EYJLEHBPCMF0AW9Uijoiny0WMI0xNvqxOxOxOxOxMzOilCJJB25KAXRPB25ZIjBeyjidwnrzQoij0YWDMASj9LhsijoinJJJJ9Lfsc3RhCNRzLxDgPdgIk2V5IiIiIl0SWYZDGFYDT20ACiIrIDB250ZWbNbNbNbNbNbQvUz3RolxDbNbNbNbNbNbNbNbNbWdZ3RolZdJbLbNbNbNbNbNbNbNbWf0LbNbWf0LbWf0LbWf0ZZZZZZZZLbWnzLbWnzLbNbWnzLbWnzLbWnzZZWVMJAXNZAYMTVCL3VZLWVHC3QTMVWVCZNCl2F3CZrFCMVXDWVZDCJ9LHSIEC1HBxOTYWNb3JPDGHTIJOIQVDTNC1ITUFDLvNIQTI1NIJ9LHSIEC1HBxOTZF0ZSI6IJIWMTCWMJE1VDEZMTM1NVOIFv19 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“X-amz-credential”

AKIAJHFKHJ2IK66STP4A/20170215/us-east-1/s3/aws4_请求 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“X-amz-algorithm”

AWS4-HMAC-SHA256 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“X-amz-date”

20170215T131355Z ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“X-amz-signature”

1c28fb88fc0b1317df11b7f566fe39eaac9b8cba012b8fef80448e93767f2677 ------WebKitFormBoundaryVGEWKAW5D70U2RP内容处置:表单数据;name=“key”

测试文件 ------WebKitFormBoundary VGEWKAW5D70U2RP--

我不知道问题是什么,也不知道如何解决。我所经历的每个例子都使用类似的过程。提前感谢。

我复制了您的“策略”值并粘贴到

默认编码是UTF-8

它无法解码

当我将其更改为ASCII时,结果部分正常

“到期”的“到期”:2017-02-15T13:14:30:38 z,“条件”的“条件”的“条件”的“条件”的“条件”的“条件”的“条件”是:“{”截至”2017-02-02-02-15:30”的“条件”的“条件”是:“{“水桶”的“桶”:”Tagffi,{“acl”的“私有”,[从“开始”,“开始于”、“关键“,,,,,,,,,,,,[从开始开始“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,UCsC3'

看起来“成功”可能有不同的“e”

尝试在上发布纯文本策略并使用该编码值

或者在这里回复,这样我可以看一看


希望这有帮助

我解码了你的base64内容 看起来您的“凭证”字段上有额外的字符。 看起来像 AKIAJHFKHJ2IK66STP4A\/20170215\/us-east-1\/s3\/aws4\U请求

您需要将其更改为
AKIAJHFKHJ2IK66STP4A/20170215/us-east-1/s3/aws4_请求

我终于解决了它。尽管我仍然不知道是什么导致了这个问题。我没有使用
$upload->getFormInputsHTML();
来获取表单内容,而是使用
$s3Policy=$upload->getFormInputs());
获取策略并单独分配给预先编写的html

<form :action="aws_url" method="POST" enctype="multipart/form-data">

    <input type="hidden" name="Content-Type" :value="s3Policy.content_type" />
    <input type="hidden" name="acl" :value="s3Policy.acl" />
    <input type="hidden" name="success_action_status" :value="s3Policy.success_action_status" />
    <input type="hidden" name="policy" :value="s3Policy.policy" />
    <input type="hidden" name="X-amz-credential" :value="s3Policy.credential" />
    <input type="hidden" name="X-amz-algorithm" :value="s3Policy.algorithm" />
    <input type="hidden" name="X-amz-date" :value="s3Policy.date" />
    <input type="hidden" name="X-amz-signature" :value="s3Policy.signature" />
    <input type="hidden" name="key" :value="s3Policy.key" />
    <input type="file" name="file">
    <input type="submit" value="Upload">

</form>


这可能是因为我的前端出现了
vuejs
,但是html在开发控制台中看起来很好。

这是因为我删除了几个字符。如果您能给我完整的base64编码值,我将非常乐意帮您解决问题。
eyjlehbpcmf0aw9uijoimjaxny0wmi0xnvqxmzo0odoxofilcjb25kaxrpb25zijbeyjidwnrzqioIJ0YWDMASJ9LHSIYWNSIJJJ9LfsIc3RhcnRzLxDgGilCika2V5IIIl0SWYJzDGFydHmTd2LcIrB250ZW50LvR5cGcGuiIxBnVbNbnRbNbNbNbNbNbNbNbNbNbNbNbNbQbGbVbWbWbNbNbWbWbWdUdUdUdUdUdUdUy3RdUdUdUd2RdUdUd4RdUdUdUdUdUdUdUdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdRdDTNC1ITUFDLVNIQTI1NIJ9LHSIEC1HBXOTZGF0ZSI6IJIWMTCWMJMJE1VDA3NDGXOFIFV19是同一个错误。我猜这些反斜杠是在解码为转义正斜杠时添加的。我看不到明显的错误,但有一种可能是该错误发生在
${filename}
已展开。请尝试在表单中暂时用静态值替换此值,如
testfile
,或上载名称中仅包含ascii字符的文件,就像测试一样。运气不好。@Michael sqlbot。
<form :action="aws_url" method="POST" enctype="multipart/form-data">

    <input type="hidden" name="Content-Type" :value="s3Policy.content_type" />
    <input type="hidden" name="acl" :value="s3Policy.acl" />
    <input type="hidden" name="success_action_status" :value="s3Policy.success_action_status" />
    <input type="hidden" name="policy" :value="s3Policy.policy" />
    <input type="hidden" name="X-amz-credential" :value="s3Policy.credential" />
    <input type="hidden" name="X-amz-algorithm" :value="s3Policy.algorithm" />
    <input type="hidden" name="X-amz-date" :value="s3Policy.date" />
    <input type="hidden" name="X-amz-signature" :value="s3Policy.signature" />
    <input type="hidden" name="key" :value="s3Policy.key" />
    <input type="file" name="file">
    <input type="submit" value="Upload">

</form>