我正在上载我的upload.java servlet,以将.jpg存储到GCS。
我使用GCS客户端库而不是Google Cloud Storage API。但是我
找不到要上传照片的任何示例(doPost方法),因此我的代码无法正常工作…
发送成功(我可以在GCS上看到我的照片,大小为465.24KB),
但是当我尝试查看此照片时,我无法:
Here is my code:
upload.java servlet public void doPost(HttpServletRequest request,
HttpServletResponse response) throws 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 code (To send photo)
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();
Thanks in advance !
我终于(自己)找到了解决我问题的方法!我为那= D感到骄傲
The code for 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();
}
The code App Engine
@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云存储!
我正在上传。要存储的java servlet。jpg至地面军事系统。 我使用GCS客户端库而不是Google云存储API。但我没有找到任何上传照片的示例(doPost方法),所以我的代码不起作用。。。 发送成功(我可以在GCS上看到大小为465.24KB的照片),但当我尝试查看这张照片时,我无法: 这是我的代码: 上载java servlet public void doPost(HttpServ
操作步骤: ①在"图层管理"模块,选择一个带有数据的图层。 ②点击记录弹出窗口。 ③点击"上传图片"按钮。 ④可以添加标注地点的照片信息,支持从本地上传和选择网络上的图片以及历史图片。 ⑤选择图片,进行添加图片。 ⑥点击"绑定图片"按钮。 提示: ●目前一个网点支持上传20张照片。 ●每张图片大小不超过5M。 操作动图: [查看原图]
我试图构建一个,它包括两个按钮,一个用于用相机拍照并上传到Firebase存储,另一个用于从Firebase存储下载图像并在上显示。 现在,我被上传功能卡住了。我可以把照片保存到应用程序目录中。我想上传保存的图片到Firebase存储。
我正在尝试从sdcard拍摄照片,它是工作的情况下,当用户选择从谷歌照片,但给出一个curserindexoutofbound错误时,从任何其他应用程序,如gallery或file Manager。这是一段代码。 OnActivity Result`{if(requestCode==PICK_IMAGE_REQUEST&&resultCode==activity.result_ok&data!=n
自动识别图像进行照片上色处理模式一 返回二进制文件流模式二 返回base64字符串模式三 通过图片url返回base64结果 照片上色API调用示例代码 github地址: https://github.com/picup-shop cURL Python PHP Java nodejs .net Objective-C curl -H 'APIKEY: INSERT_YOUR_API_KEY_H
我是android studio和手机应用程序开发的初学者,但我仍在努力学习。因此,我设法构建了我的第一个webview应用程序来显示页面和图片。我发现了许多有用的资源来帮助我这样做,但我仍然面临着一个问题,即如何直接上传从手机摄像头(而不是从图库)拍摄的照片并上传到服务器。 1-在我按下眉毛按钮后,应用程序会提示我是从相机还是从画廊拍摄照片。(Android版9)2-当我从图库上传一张照片时,应