File upload AmazonS3上传密钥做什么
我真的很困惑,当使用AmazonS3时,键值应该是什么。这里是我的代码File upload AmazonS3上传密钥做什么,file-upload,amazon-s3,File Upload,Amazon S3,我真的很困惑,当使用AmazonS3时,键值应该是什么。这里是我的代码 <form action="http://bucket.s3.amazonaws.com" method="post" enctype="multipart/form-data"> <input type="text" name="key" value="{filename}" /> <input type="text" name="acl" value="public-read" /&g
<form action="http://bucket.s3.amazonaws.com" method="post" enctype="multipart/form-data">
<input type="text" name="key" value="{filename}" />
<input type="text" name="acl" value="public-read" />
<input type="text" name="content-type" value="text/plain" />
<input type="hidden" name="AWSAccessKeyId" value="Amazon Key" />
<input type="hidden" name="policy" value="ewogICJleHBpcmF0aW9uIjogIjIwMTItMDEtMDFUMTI6MDA6MDAuMDAwWiIsCiAgImNvbmRpdGlvbnMiOiBbCiAgICB7ImJ1Y2tldCI6ICJpcIHsiYWNsIjogInB1YmxpYy1yZWFkIiB9LAogICAgWyJlcSIsICIka2V5IiwgIntmaWxlbmFtZX0iXSwKICAgIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJ0ZXh0LyJdLAogIF0KfQo=" />
<input type="hidden" name="signature" value="fGWi1jKU+hKZKbCIL1eD0=" />
<input name="file" type="file" />
<input name="submit" value="Upload" type="submit" />
</form>
好的,所以我使用这个服务来生成我的策略等,因为我不知道如何手动执行
这工作,并给我一切上传。但是当我上传文件时,它们总是被称为{filename},而不是实际的文件名picture.jpg。我知道这是底线
<input type="text" name="key" value="{filename}" />
我希望它从我上传的文件名中去掉这个值
我做错了什么?我很困惑
我试着把它留空,但我得到了这个错误
InvalidArgumentUser密钥必须具有
长度大于0
我想让它为我解决这个问题
请提供任何帮助您需要获取上传文件的名称,并将其粘贴在{filename}的位置参数“key”是bucket中上传文件的名称。您可以为浏览过的文件设置不同的名称。我之前没有提到的一点是使用AmazonEC2API提供的实用程序类。下面的类包含获取策略字符串和签名的方法。如果您不需要设置额外的元字段或存储类,这是一个很好的帮助器类:
com.amazonaws.services.ec2.util.S3UploadPolicy
您只是在{filename}位前面缺少一个$符号。应该是:
<input type="text" name="key" value="${filename}" />
有关更多信息,请参阅。我知道您很久以前就发布了此问题,但可能有人有相同的问题
键是要上载的文件的名称和路径
您可以在策略中设置有关密钥的条件,例如密钥应该从什么开始。
您可以使用以下值保留原始文件名:${filename}(您缺少$)
示例:
保留原始文件名,但放入文件夹/文档中/
表格:
<form action="http://yourbucketname.s3.amazonaws.com" method="post" enctype="multipart/form-data">
<input type="text" name="key" value="docs/${filename}" />
<input type="text" name="acl" value="public-read" />
<input type="text" name="content-type" value="text/plain" />
<input type="hidden" name="AWSAccessKeyId" value="<YourPublicKey>" />
<input type="hidden" name="policy" value="<Base64_encoded_your_policy>" />
<input type="hidden" name="signature" value="<HMAC SHA-1 of the policy>" />
<input name="file" type="file" />
<input name="submit" value="Upload" type="submit" />
</form>
您需要做的是:
- 在for action和Policy Json中替换Yourbucketname
- 对策略进行编码
- 以策略值的形式设置策略
- 在表单中替换您的
- 使用您的密码对编码策略进行签名
- 在表单签名值中设置签名
{
"expiration": "2014-01-01T00:00:00.00Z",
"conditions": [
{"bucket": "BUCKET NAME" },
["starts-with", "$key", "PREFIX_IF_ANY"],
{"acl": "public-read" },
{"success_action_redirect": "http://REDIRECTED_URL" },
["starts-with", "$Content-Type", "CONTENT_TYPE"],
["content-length-range", 0, 1048576],
]
}
此代码的HTML表单如下所示:
<html>
<head>
<title>S3 POST Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="http://BUCKET_NAME.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="hidden" name="key" value="picbum/${filename}">
<input type="hidden" name="AWSAccessKeyId" value="AccessID">
<input type="hidden" name="acl" value="public-read">
<input type="hidden" name="success_action_redirect" value="http://REDIRECTED_URL">
<!-- Fill these HTML fields with data generated from python script -->
<input type="hidden" name="policy" value='BASE64_POLICY'>
<input type="hidden" name="signature" value="SIGNATURE_GENERATED">
<input type="hidden" name="Content-Type" value="CONTENT_TYPE">
<!-- Include any additional input fields here -->
File to upload to S3:
<input name="file" type="file">
<br>
<input type="submit" value="Upload File to S3">
</form>
</body>
</html>
S3邮政表格
要上载到S3的文件:
您好,我尝试过使用,但没有显示您建议如何操作。我遇到了类似的问题,我像[此][1][1]一样解决了它:
{
"expiration": "2014-01-01T00:00:00.00Z",
"conditions": [
{"bucket": "BUCKET NAME" },
["starts-with", "$key", "PREFIX_IF_ANY"],
{"acl": "public-read" },
{"success_action_redirect": "http://REDIRECTED_URL" },
["starts-with", "$Content-Type", "CONTENT_TYPE"],
["content-length-range", 0, 1048576],
]
}
<html>
<head>
<title>S3 POST Form</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form action="http://BUCKET_NAME.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
<input type="hidden" name="key" value="picbum/${filename}">
<input type="hidden" name="AWSAccessKeyId" value="AccessID">
<input type="hidden" name="acl" value="public-read">
<input type="hidden" name="success_action_redirect" value="http://REDIRECTED_URL">
<!-- Fill these HTML fields with data generated from python script -->
<input type="hidden" name="policy" value='BASE64_POLICY'>
<input type="hidden" name="signature" value="SIGNATURE_GENERATED">
<input type="hidden" name="Content-Type" value="CONTENT_TYPE">
<!-- Include any additional input fields here -->
File to upload to S3:
<input name="file" type="file">
<br>
<input type="submit" value="Upload File to S3">
</form>
</body>
</html>