上传一个txt到AmazonS3
Upload a txt to Amazon S3
我正在使用s3-sdk上传一个字符串(它将被更改为txt文件)。使用sdk是可以的。但由于sdk只适用于新浏览器(例如:ie10+),我需要用另一种方式上传我的文件(适用于旧浏览器)
对于图像文件,我使用输入(类型文件)和上传的表格
<form id="urlform" enctype="multipart/form-data" method="post" target="upload_target" class="inline">
<input type="hidden" name="key" value="{{$parent.keyurl}}">
<input type="hidden" name="acl" value="public-read">
<input type="hidden" name="AWSAccessKeyId" value="{{$parent.awSAccessKeyIdUrl}}">
<input type="hidden" name="success_action_redirect" value="{{$parent.redirectionUrl}}">
<input type="hidden" name="x-amz-meta-filename" value="{{$parent.filenameurl}}">
<input type="hidden" name="policy" value="{{$parent.policyurl}}">
<input type="hidden" name="signature" value="{{$parent.signatureurl}}">
<input type="hidden" name="x-amz-security-token" value="{{$parent.urlSessionToken}}">
<div>
<label>
</label>
<input type="file" name="file" id="urlfileinput">
</div>
</form>
此解决方案仅适用于输入类型文件。
出于安全原因,我不能用jquery更改输入的值。
是否有其他上传文本的方法(可能使用rest api)?
我很好奇你为什么要使用URL表单将其提交给亚马逊。。。这是非常不安全的,因为你要把你的AWS访问密钥发给每个人。首先,您需要研究使用AmazonSDK for Javascript,将Angular作为一个依赖项,它应该很容易工作。
接下来,您需要考虑在S3 Bucket上执行CORS(跨域资源共享),这样您就可以在不需要身份验证的情况下从任何地方"上传"S3上的内容(请小心,因为每个都可以访问它并上传任何内容,如果您没有正确配置它,则可以访问其他内容,如删除)。
最后,您只需要使用SDK的AWS.S3().putObject()函数将您需要的任何内容上传到您的公共S3存储桶中。
您可以使用表单数据发送文件。
var formData = new FormData();
formData.append("key", "{{$parent.keyurl}}");
formData.append("acl", 'public-read');
formData.append("AWSAccessKeyId", '{{$parent.awSAccessKeyIdUrl}}');
formData.append("success_action_redirect", '{{$parent.redirectionUrl}}');
.........
// JavaScript file-like object...
var blob = new Blob('testSample', { type: "text/xml"});
formData.append("file", blob);
var request = new XMLHttpRequest();
request.open("POST", "upload_target");
request.send(formData);
我找到了一个解决方案。为了上传一个文本,我必须使用一个名为"文件"的表单内部。
<form id="disclaimerform" enctype="multipart/form-data" method="post" target="upload_target" class="inline">
<input type="hidden" name="key" value="{{keydisclaimer}}">
<input type="hidden" name="acl" value="public-read">
<input type="hidden" name="AWSAccessKeyId" value="{{awSAccessKeyId}}">
<input type="hidden" name="success_action_redirect" value="{{redirection}}">
<input type="hidden" name="x-amz-meta-filename" value="{{disclaimerfilename}}">
<input type="hidden" name="x-amz-security-token" value="{{session_token}}">
<input type="hidden" name="policy" value="{{policy}}">
<input type="hidden" name="signature" value="{{signature}}">
<div>
<label></label>
<textarea style="opacity:0;" name="file" id="disclaimerinput"/>
</div>
</form>
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- 读取一个动态填充的txt文件
- 读取一个txt文件并检查时间
- 编写一个javascript var="一些文本“;转换为预加载但为空的txt文档
- Phonegap-在第一次加载时创建一个.txt文件
- Javascript:解析一个txt文件,将数据传递给一个数组
- 如何加载一个txt/csv文件到javascript字符串/数组,而离线
- 我如何写在一个txt文件使用javascript
- 将多个链接从txt文件一个接一个地插入到一个iframe中
- 在网页上显示一个每秒更新一次的txt文件
- 上传一个txt到AmazonS3
- 客户端-创建一个弹出窗口并用Javascript将其写成txt
- iMacros TAG以查找TXT并单击附近(上一个)链接