- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 GDK 为 google glass 开发一个应用程序,我正在尝试使用 MultiPartEntity 上传我捕获的图像,但由于某种原因我无法让它工作我无法弄清楚,因为它没有返回任何错误。到目前为止,这就是我所在的位置。
Java
String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH);
final File pictureFile = new File(picturePath);
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("SERVER PATH");
try {
@SuppressWarnings("deprecation")
MultipartEntity entity = new MultipartEntity();
entity.addPart("type", new StringBody("photo"));
entity.addPart("data", new FileBody(pictureFile));
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
PHP 代码:
$response = array();
$file_upload_url = 'UPLOAD PATH';
if (isset($_FILES['image']['name'])) {
$target_path = $target_path . basename($_FILES['image']['name']);
$email = isset($_POST['email']) ? $_POST['email'] : '';
$website = isset($_POST['website']) ? $_POST['website'] : '';
$response['file_name'] = basename($_FILES['image']['name']);
$response['email'] = $email;
$response['website'] = $website;
try {
// Throws exception incase file is not being moved
if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
// make error flag true
$response['error'] = true;
$response['message'] = 'Could not move the file!';
}
// File successfully uploaded
$response['message'] = 'File uploaded successfully!';
$response['error'] = false;
$response['file_path'] = $file_upload_url . basename($_FILES['image']['name']);
} catch (Exception $e) {
// Exception occurred. Make error flag true
$response['error'] = true;
$response['message'] = $e->getMessage();
}
} else {
// File parameter is missing
$response['error'] = true;
$response['message'] = 'Not received any file!';
}
echo json_encode($response);
?>
任何帮助将不胜感激。
最佳答案
这是我的代码。它对我有用。您可以使用此代码发送带有进度条的参数和文件。
public class SendFile extends AsyncTask<String, Integer, Integer> {
private Context conT;
private ProgressDialog dialog;
private String SendUrl = "";
private String SendFile = "";
private String Parameters = "";
private String result;
public File file;
SendFile(Context activity, String url, String filePath, String values) {
conT = activity;
dialog = new ProgressDialog(conT);
SendUrl = url;
SendFile = filePath;
Parameters = Values;
}
@Override
protected void onPreExecute() {
file = new File(SendFile);
dialog.setMessage("Please Wait..");
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax((int) file.length());
dialog.show();
}
@Override
protected Integer doInBackground(String... params) {
HttpURLConnection connection = null;
DataOutputStream outputStream = null;
InputStream inputStream = null;
String twoHyphens = "--";
String boundary = "*****"
+ Long.toString(System.currentTimeMillis()) + "*****";
String lineEnd = "\r\n";
int bytesRead, bytesAvailable, bufferSize;
byte[] buffer;
int maxBufferSize = 1 * 512;
String[] q = SendFile.split("/");
int idx = q.length - 1;
try {
FileInputStream fileInputStream = new FileInputStream(file);
URL url = new URL(SendUrl);
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("User-Agent",
"Android Multipart HTTP Client 1.0");
connection.setRequestProperty("Content-Type",
"multipart/form-data; boundary=" + boundary);
outputStream = new DataOutputStream(
connection.getOutputStream());
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
outputStream
.writeBytes("Content-Disposition: form-data; name=dosya; filename=\""
+ q[idx] + "\"" + lineEnd);
outputStream.writeBytes("Content-Type: image/jpg" + lineEnd);
outputStream.writeBytes("Content-Transfer-Encoding: binary"
+ lineEnd);
outputStream.writeBytes(lineEnd);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
int boyut = 0;
while (bytesRead > 0) {
boyut += bytesRead;
outputStream.write(buffer, 0, bufferSize);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
dialog.setProgress(boyut);
}
outputStream.writeBytes(lineEnd);
String[] posts = Bilgiler.split("&");
int max = posts.length;
for (int i = 0; i < max; i++) {
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
String[] kv = posts[i].split("=");
outputStream
.writeBytes("Content-Disposition: form-data; name=\""
+ kv[0] + "\"" + lineEnd);
outputStream.writeBytes("Content-Type: text/plain"
+ lineEnd);
outputStream.writeBytes(lineEnd);
outputStream.writeBytes(kv[1]);
outputStream.writeBytes(lineEnd);
}
outputStream.writeBytes(twoHyphens + boundary + twoHyphens
+ lineEnd);
inputStream = connection.getInputStream();
result = this.convertStreamToString(inputStream);
Log.v("TAG","result:"+result);
fileInputStream.close();
inputStream.close();
outputStream.flush();
outputStream.close();
} catch (Exception e) {
}
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
dialog.setProgress(progress[0]);
}
@Override
protected void onPostExecute(Integer result1) {
dialog.dismiss();
};
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
如果你发送到 PHP,你可以使用这个
<?php
$file_path = "test/";
$username= $_POST["username"];
$password= $_POST["password"];
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
echo "success";
} else{
echo "fail";
}
?>
编辑 - 2:
你可以这样调用这个 AsyncTask :
String FormData = "username=" + Session.getUsername()
+ "&password=" + Session.getPassword() ;
SendFile SendIt= new SendFile(this, upLoadServerUri, filePath,FormData);
SendIt.execute();
关于java - Android使用GDK使用MultipartEntity上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684440/
我刚刚在我的 glass XE 20.1 上试用了更新后的 gdk,我的测试应用程序崩溃了,因为新的 api 不可用。 CardBuilder card = new CardBuilder(this,
我正在使用 Gdk::Pixbuf 在 C++ 中显示带有 Gdk::Cairo 的图像: virtual bool on_draw(const Cairo::RefPtr& cr) { Gl
我猜有人可能会觉得它微不足道,但我在这里问它是因为我找不到直接的答案。 让我们深入探讨这个问题: 拥有多个图像资源以及不断使用这些图像的 cairo 上下文。当然,我可以这样做: Glib::RefP
如何设置或更改 GdkPixbuf.Pixbuf 的颜色? 我可以创建和填充: pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, Fals
在纯 GDK 3.10(无 GTK)项目中,如何刷新/清除/重绘 GdkWindow 的透明背景? 这个test.c在初始化(gdk_window_show())时以及当我图标化+取消图标化窗口时正确
在GDK中有一个名为GdkRectangle的对象用于绘制矩形。椭圆有类似的对象吗? 最佳答案 没有。实际上,GdkRectangle并不直接用于绘制矩形,它只是用于指定矩形位置。例如,gdk_dra
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
今天,我的 Glass 应用上的图片功能停止工作。昨天还好,但现在它卡在点击接受图片上。我认为这可能与它处理图片以及取景器的新方式(至少对我而言)有关。我在玻璃开发人员网站上可以找到的内容已被弃用且无
我发布了一张高频实时卡片,我希望在用户查看卡片时防止屏幕变暗。 我意识到这是一个重复的问题 GDK / APK for Google Glass - Keep screen from dimming
我有一个 gtk 程序,我在其中调用了一个 gdk 函数。我正在使用以下方法编译程序: gcc `pkg-config --cflags --libs gtk+-2.0 cairo glib-2.0
我想编写一个连续捕获屏幕并对图像进行一些修改的程序。可以在以下位置找到完整的测试程序: https://gist.github.com/blogsh/eb4dd4b96aca468c8bfa 但是,我
GDK 库的功能究竟是什么,Cairo 是如何适应的?它们是竞争技术还是互补技术?其中一个是否以任何方式依赖另一个? 最佳答案 TL;博士: 在最近的版本中,GDK 是 GTK+ 的平台抽象层。它还为
报告 Google Glass GDK 错误/功能请求的正确位置是什么?和Mirror API一样吗? 最佳答案 是的,该跟踪器同时用于 Mirror API 和 GDK 错误报告/功能请求。 关于g
我可以在 Glass 的 DCIM 目录中创建一个 JSON 文件,但当我在 Glass 上访问该文件时,该文件不可见。 这是代码: File jsonFile = new File(Environm
当我在 java 8 Stream 上使用 collect 方法时,Groovy 抛出一个奇怪的错误。这是我的代码: someStream.collect(Collectors.toList()) 这
如何将 System.Drawing.Bitmap 转换为 GDK# Image 以便我可以设置为图像小部件。 我试过这个... System.Drawing.Bitmap b = new Bitma
使用 GTK+ 3.6 我想显示内存缓冲区中的图像,而不是磁盘上的文件。我有一个包含图像数据的 const char *data,我正在尝试从中创建一个 GTK 图像。到目前为止,我已经尝试了两种我认
我正在尝试将 GDK 导入我的程序,但我仍然遇到错误 No module named GDK 你知道我该如何解决这个问题吗?因为在我尝试 import gtk.GDK 之前它已经工作了并导入GDK。
我正在尝试将 *.jpg 图像加载到 Gdk::Pixbuf 中,但失败并不断告诉我:解释 JPEG 图像文件时出错(错误的 JPEG 库版本:库为 62,调用者期望为 80) try{ Gd
在我的程序中,我想使用本地硬盘驱动器上不存在的图像文件。 因此,我使用 xxd -i 生成了一个包含图像数据的 unsigned char[] 并将其嵌入到我的程序中。 但现在我无法从中加载 Gdk:
我是一名优秀的程序员,十分优秀!