我正在上传。要存储的java servlet。jpg至地面军事系统。
我使用GCS客户端库而不是Google云存储API。但我没有找到任何上传照片的示例(doPost方法),所以我的代码不起作用。。。
发送成功(我可以在GCS上看到大小为465.24KB的照片),但当我尝试查看这张照片时,我无法:
这是我的代码:
上载java servlet public void doPost(HttpServletRequest请求、HttpServletResponse响应)引发IOException{
//Read the file contents from the input stream
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(BUCKETNAME, FILENAME);
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType("image/jpeg")
.acl("public-read")
.addUserMetadata("myfield1", "my field value")
.build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);
InputStream is = request.getInputStream();
try {
copy(is, Channels.newOutputStream(writeChannel));
} finally {
writeChannel.close();
is.close();
}
}
private void copy(InputStream input, OutputStream output) throws IOException {
byte[] buffer = new byte[256];
int bytesRead = input.read(buffer);
while (bytesRead != -1) {
output.write(buffer, 0, bytesRead);
bytesRead = input.read(buffer);
}
}
android代码(发送照片)
HttpPost httppost = new HttpPost("adress.appengine.com/upload");
//On créé un fichier File qui contient la photo que l'on vient de prendre (Accessible via son Path)
File f = new File(AccueilActivity.fileUri.getPath());
//On créé un FileBody (Contenu de notre requête http POST) contenant notre photo
FileBody fileBody = new FileBody(f);
//Permet de créer une requête avec plusieurs partie
MultipartEntity reqEntity = new MultipartEntity();
//On ajoute notre photo avec le mot clé file.
reqEntity.addPart("file", fileBody);
//On set notre requête HTTP
httppost.setEntity(reqEntity);
//On execute notre requete HTTP Post, et on appele du coup automatiquement le servlet "uploaded",
//et on met la réponse dans response.
HttpResponse response = httpClient.execute(httppost);
//Ici on récupère l'entête de notre réponse HTTP (Tout sauf le code réponse)
HttpEntity urlEntity = response.getEntity();
提前感谢!
我终于找到了解决我问题的办法!我对此感到非常自豪=D
Android的代码:
//Actions à réaliser en fond
protected String doInBackground(String... params) {
//Création d'une requête HTTP
HttpClient httpClient = new DefaultHttpClient();
//On construit notre adresse Post grâce à ce que l'on vient de récupérer
HttpPost httppost = new HttpPost("http://your_id.appspot.com/upload");
//On créé un fichier File qui contient la photo que l'on vient de prendre (Accessible via son Path)
File f = new File(AccueilActivity.fileUri.getPath());
//Et là on essaie !
try {
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addBinaryBody("Photo_a_uploader", f);
entityBuilder.addTextBody("Type", "Type que l'utilisateur a choisi");
httppost.setEntity(entityBuilder.build());
HttpResponse response = httpClient.execute(httppost);
} catch (ClientProtocolException e) {
// Si on tombe dans le catch, on set notre variable à 2.
e.printStackTrace();
} catch (IOException e) {
// Si on tombe dans le catch, on set notre variable à 2.
e.printStackTrace();
}
代码应用程序引擎
@Override
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
//Read the file contents from the input stream
GcsService gcsService = GcsServiceFactory.createGcsService();
GcsFilename filename = new GcsFilename(BUCKETNAME, FILENAME);
GcsFileOptions options = new GcsFileOptions.Builder()
.mimeType("image/jpg")
.acl("public-read")
.addUserMetadata("myfield1", "my field value")
.build();
GcsOutputChannel writeChannel = gcsService.createOrReplace(filename, options);
ServletFileUpload upload = new ServletFileUpload();
res.setContentType("text/plain");
try {
FileItemIterator iterator = upload.getItemIterator(req);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (item.isFormField()) {
log.warning("Champs texte avec id: " + item.getFieldName()+", et nom: "+Streams.asString(stream));
} else {
log.warning("Nous avons un fichier à uploader : " + item.getFieldName() +
", appelé = " + item.getName());
// You now have the filename (item.getName() and the
// contents (which you can read from stream). Here we just
// print them back out to the servlet output stream, but you
// will probably want to do something more interesting (for
// example, wrap them in a Blob and commit them to the
// datastore).
// Open a channel to write to it
byte[] bytes = ByteStreams.toByteArray(stream);
try {
writeChannel.write(ByteBuffer.wrap(bytes));
} finally {
writeChannel.close();
stream.close();
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我希望这些示例可以帮助您使用app engine和google云存储!
问题内容: 我正在上载我的upload.java servlet,以将.jpg存储到GCS。 我使用GCS客户端库而不是Google Cloud Storage API。但是我 找不到要上传照片的任何示例(doPost方法),因此我的代码无法正常工作… 发送成功(我可以在GCS上看到我的照片,大小为465.24KB), 但是当我尝试查看此照片时,我无法: Here is my code: uplo
嗨,我正在开发IOS应用程序。我还使用JSON web服务。我还使用Google App Engine for python。我对python和google应用程序引擎真的是个新手。我想不出这个问题; 我在json中发送bas64图像和其他信息。我想保存其他信息到数据库(GQL),并保存到图像谷歌文件夹(Blob商店),这张照片网址保存在谷歌数据库的其他信息。 你能帮帮我吗 更新
我试图选择在Android上使用意图的照片。所有作品和照片正在检索从任何照片应用程序(相机,画廊,截图等...即使从新的照片应用程序中选择);除了那些在谷歌照片上备份在线。 在获得位图时,在人像拍摄的照片将在风景中检索。我有代码来获取照片的方向,这样我就可以相应地翻译,但是在新的谷歌照片应用程序上选择在线照片时,方向总是0。任何想法,我应该如何获得这些照片的方向,因为0正在返回?代码如下-谢谢。
我有一个quarkus应用程序,当我用下面的命令构建应用程序时,进程第一次开始完美地编译quarkus:dev-DskipTests=true 成功启动的日志: 但是当我停下来重新开始这个过程时,过程并没有开始... 启动失败的日志: 当我尝试重新启动机器,然后启动quarkus服务时,它会再次工作。 pom。xml: 如果有人遇到过类似的行为,请告诉我,这可能是什么根源。
Instagram最近改变了他们的API政策,允许开发者通过自己的应用程序将图片发布到Instagram平台。我们以前使用的几种其他技术来实现这一目标。其中之一是调用Instagram应用程序,该应用程序基本上可以打开Instagram并在那里进行共享。关于如何做到这一点的教程可以在这里看到:如何从你自己的iOS应用程序分享图像到Instagram 然而,有几个应用程序允许直接共享到Instagr
我有一些文件是从Evernote API接收的(通过),并使用以下代码写入Google Cloud Storage: 即使对于某些类型的文档,它仍然有效。但GCS在日志中记录了某些文件: 和 这些错误似乎没有任何模式。它发生在文档、声音、图片等任何类型的文档中,其中一些文档类型有效,而另一些文档类型无效。这与大小无关(因为一些小文档和一些大文档都有效)。 有什么想法吗? 这是完整的堆栈跟踪,尽管我