我试图通过使用GCSExampleServlet.java遵循Google的示例来设置Google云存储文件上传。我已经完成了所有步骤,但当我将项目部署到aggengine并试图在GCS中上传一个简单的文本时,它失败了,出现了以下日志:
com.google.appengine.tools.cloudstorage.NonRetriableException: com.google.appengine.tools.cloudstorage.NonRetriableException: com.google.appengine.api.appidentity.AppIdentityServiceFailureException:
The AppIdentity service threw an unexpected error. Details:
at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:120)
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:166)
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156)
at com.google.appengine.tools.cloudstorage.GcsServiceImpl.createOrReplace(GcsServiceImpl.java:70)
at com.appart.storage.server.GcsExampleServlet.doPost(GcsExampleServlet.java:88)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
(...)
尽管如此,代码中没有任何复杂的地方...在web.xml中,我配置了servlet:
<servlet>
<servlet-name>GcsExample</servlet-name>
<servlet-class>
com.example.server.GcsExampleServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GcsExample</servlet-name>
<url-pattern>/gcs/*</url-pattern>
</servlet-mapping>
@SuppressWarnings("serial")
public class GcsExampleServlet extends HttpServlet {
private final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());
//...
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException
{
GcsOutputChannel outputChannel =
gcsService.createOrReplace(getFileName(req), GcsFileOptions.getDefaultInstance());
copy(req.getInputStream(), Channels.newOutputStream(outputChannel));
}
private void copy(InputStream input, OutputStream output) throws IOException {
try {
byte[] buffer = new byte[BUFFER_SIZE];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
} finally {
input.close();
output.close();
}
}
}
<form action="/upload.html" enctype="text/plain" method="get" name="putFile" id="putFile">
<div>
Bucket: <input type="text" name="bucket" />
File Name: <input type="text" name="fileName" />
<br /> File Contents: <br />
<textarea name="content" id="content" rows="3" cols="60"></textarea>
<br />
<input type="submit" onclick='uploadFile(this)' value="Upload Content" />
</div>
</form>
<script>
function uploadFile() {
var bucket = document.forms["putFile"]["bucket"].value;
var filename = document.forms["putFile"]["fileName"].value;
if (bucket == null || bucket == "" || filename == null || filename == "") {
alert("Both Bucket and FileName are required");
return false;
} else {
var postData = document.forms["putFile"]["content"].value;
document.getElementById("content").value = null;
var request = new XMLHttpRequest();
request.open("POST", "/gcs/" + bucket + "/" + filename, false);
request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
request.send(postData);
}
}
</script>
我已经启用了计费,创建了一个bucket,但AppIdentity错误仍然出现。我没有Oauth,云存储API已经启用,用于上传的appengine帐户对bucket有写访问权限。我甚至试过
gsutil acl ch -u warm-particle-718@appspot.gserviceaccount.com:WRITE gs://ctrlxbucket
以确保用户对我的bucket具有写访问权限。
请帮我弄清楚这个错误是什么意思,我已经在这里呆了几天了:(
不要使用warm-particle-718@appspot.gserviceaccount.com,请尝试使用XXX@developer.gserviceaccount.com(将XXX替换为应用程序的项目id--取自管理控制台“管理/应用程序设置”中的“Google API Console project Number”)。
这会给出以下输出{“error”:{“error”:[{“domain”:“global”,“reason”:“autherror”,“message”:“invalid credentials”,“locationtype”:“header”,“location”:“authorization”}],“code”:401,“message”:“invalid credentials”}} 有人能
试图调试这个简单的NodeJS socketIO服务器。 我在启动时不断收到以下错误消息。我看不出代码有什么问题。 TypeError:侦听器必须是服务器上Namespace.EventEmitter.AddListener(Events.js:130:11)处的TypeError()处的函数。(匿名函数)[如上](/users/foo/bin/node_modules/socket.io/lib
我试图从GCS读取文件。以下是我创建的方法。我在一些服务层中使用这个方法。因为这个方法中的一些调用是静态的和最终的,因为我的单元测试失败了。 以下是地面军事系统存储的代码: 我正试图为同样的问题编写Junit测试。但是文件。类是最终类,用于我收到空指针异常。 期待尽快收到你们的来信。
阿里云存储服务(OpenStorageService,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。用户可以通过简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据,也可以使用WEB页面对数据进行管理。同时,OSS提供Java、 Python、 PHP、C#语言的SDK,简化用户的编程。基于OSS,用户可以搭建出各种多媒体分享网站、网盘、个人和企业
在运行时显示错误在Gradle错误: 错误:任务“:app:TransformClassesWithInstantRunForderBug”的执行失败。 意外输入:ImmutableJarInput{name=com.google.android.gms:play services base:9.0.0,file=/home/nawaf/AndroidStudioProjects/YugiohDe
问题内容: 这是我包含传播算子的代码 我需要安装或添加哪些东西才能使其运行? 以及它的等效含义是什么? 问题答案: 您需要配置Babel以使用transform-object-rest- spread插件。有关详细信息,请参见以下链接:https : //babeljs.io/docs/plugins/transform-object-rest- spread/