如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

2024-05-19

如何将图像从 android 移动到 Web 服务器上的指定文件夹

这是我的安卓代码

package com.example.bitmaptest;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;

public class Upload extends Activity {
InputStream is;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Bitmap bitmapOrg=BitmapFactory.decodeResource(getResources(),R.drawable.a1);
    ByteArrayOutputStream bao = new ByteArrayOutputStream();
    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao);
    byte[] ba = bao.toByteArray();
    String ba1 = Base64.encodeToString(ba, 0);
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("image", ba1));

    try {

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(
                "http://0.0.0.7:80/android/base.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
    }

}
}

这是我的 php 脚本

$uploadedFile = $_FILES['image']['name'];

$uploadedType = $_FILES['image']['type'];

$temp = $_FILES['image']['tmp_name'];

$error = $_FILES['image']['error'];

if ($error > 0) {
die("File could not be uploaded. $error");
}
else {
    move_uploaded_file($temp, "images/".$uploadedFile);
    echo "Upload Complete. ".$uploadedType;
}

当我在android中发送时,httppost工作,它显示在wireshark中,但文件是空的。没有图像。


doFileUpload函数:

private void doFileUpload(){
    HttpURLConnection conn = null;
    DataOutputStream dos = null;
    DataInputStream inStream = null; 
    String exsistingFileName = "/sdcard/six.3gp";
    // Is this the place are you doing something wrong.
    String lineEnd = "\r\n";
    String twoHyphens = "--";
    String boundary =  "*****";
    int bytesRead, bytesAvailable, bufferSize;
    byte[] buffer;
    int maxBufferSize = 1*1024*1024;
    String urlString = "http://192.168.1.5/upload.php";
    try
    {
        Log.e("MediaPlayer","Inside second Method");
        FileInputStream fileInputStream = new FileInputStream(new File(exsistingFileName) );
        URL url = new URL(urlString);
        conn = (HttpURLConnection) url.openConnection();
        conn.setDoInput(true);
        // Allow Outputs
        conn.setDoOutput(true);
        // Don't use a cached copy.
        conn.setUseCaches(false);
        // Use a post method.
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary);
        dos = new DataOutputStream( conn.getOutputStream() );
        dos.writeBytes(twoHyphens + boundary + lineEnd);
        dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + exsistingFileName +"\"" + lineEnd);
        dos.writeBytes(lineEnd);
        Log.e("MediaPlayer","Headers are written");
        bytesAvailable = fileInputStream.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        buffer = new byte[bufferSize];
        bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        while (bytesRead > 0)
        {
            dos.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        }
        dos.writeBytes(lineEnd);
        dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) 
            tv.append(inputLine);
        // close streams
        Log.e("MediaPlayer","File is written");
        fileInputStream.close();
        dos.flush();
        dos.close();
    }
    catch (MalformedURLException ex)
    {
        Log.e("MediaPlayer", "error: " + ex.getMessage(), ex);
    }
    catch (IOException ioe)
    {
        Log.e("MediaPlayer", "error: " + ioe.getMessage(), ioe);
    }

    //------------------ read the SERVER RESPONSE
    try {
        inStream = new DataInputStream ( conn.getInputStream() );
        String str;            
        while (( str = inStream.readLine()) != null)
        {
            Log.e("MediaPlayer","Server Response"+str);
        }
        /*while((str = inStream.readLine()) !=null ){

        }*/
        inStream.close();
    }
    catch (IOException ioex){
        Log.e("MediaPlayer", "error: " + ioex.getMessage(), ioex);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中 的相关文章

  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • 尝试在 Android Studio 上运行单元测试时出现 NoClassDefFoundError

    我正在尝试为我的 Android 应用程序创建一些简单的测试 但在运行测试时遇到了问题 当我尝试运行测试时 我不断收到 NoClassDefFound 错误 但我似乎无法弄清楚其原因是什么 如果我能有一双新的眼睛来看待这个问题 我将不胜感激
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • Android ListView:当内容发生变化时,如何保持ListView位于顶部?

    我有一个视图 其中包含绑定到游标适配器的 ListView 当光标内容更改时 我想将 ListView 保留在顶部 然后在我的自定义光标适配器中添加 Override protected void onContentChanged myLi
  • 在 webview 片段中实现后退按钮

    我想在我的应用程序中实现后退按钮 我正在使用每个片段显示不同的网络视图 现在 如果我按后退按钮 无论我在哪里 它都会关闭应用程序 我希望它能像浏览器一样返回 我有我的MainActivity java fragment1 java等直到fr
  • 使用 MongoDB PHP 驱动程序时的安全问题

    我有在 MYSQL 上保护 sql 注入的经验 但是在使用 php 驱动程序的 MongoDB 上我应该注意什么 在大多数页面中 我通过 GET POST 和搜索 插入系统获取数据 我通过 UDID 其他字段进行搜索 并且可以插入任何字符串
  • PHP中如何找出特定进程仍在运行

    我正在编写一个脚本 该脚本构建其他脚本的队列 并应该管理它们的启动 管理器脚本应该知道哪个子进程已经完成 因此它可以启动在队列中等待的其他脚本 我添加了一个 echo 获取每个子进程的进程 ID 所以我有我的子进程进程 ID 现在正在使用系
  • 如果使用 PackageManager 禁用应用程序图标,是否会导致该应用程序的自动更新出现问题?

    我有一个应用程序 其中使用以下代码隐藏应用程序图标 PackageManager p getApplicationContext getPackageManager p setComponentEnabledSetting getCompo
  • Android 应用程序中最用户友好的布局选项

    所以我面临的问题不是主观判断什么对用户最好 我认为 而是有哪些选项可以用来说明定位 Think of some sort of team sports app where you can put little dots for player
  • 发布 apk 中的“来源不明”

    我的调试 APK 中的所有内容都运行良好 但是 当我导出 APK 并安装它时 一切正常 直到我调用引用的库 E AndroidRuntime 32571 at com znood znoodapp ShowResultsActivity a
  • 我可以通过编程方式选择 Android 布局文件夹吗?

    我正在构建一个 Android 应用程序 它使用不同的布局文件夹 即 Large xlarge 等 根据屏幕尺寸调整大小 唯一的问题是 我想为用户提供一种在小屏幕布局和大屏幕布局之间切换的方法 以防他们拥有无法识别 xlarge 标签的前蜂
  • Android Widget 实现

    嗨 如果这个问题很愚蠢 我提前道歉 我对 Android 编程相当陌生 而且学得很快 我刚刚创建了一个任务提醒应用程序 并且想将该应用程序转换 实现为一个可以在主屏幕上查看的小部件 有什么方法吗 这可能吗 Thanks 如果没有更多关于您的
  • 如果没有 @Provides 注释的方法,则无法提供 Dagger AndroidInjector

    我已经通过 MVP 模式完成了我的 Android 项目 MainActivity 因此 在我的 MainPresenter 中 我想注入一个动态字符串 然后该字符串将填充 TextView 例如 class MyMainPresenter
  • Android Path addArc 在canvas中两点之间

    我正在尝试在 android 中绘制弧线 在IOS中 用这个方法确实很简单 path addArcWithCenter radius startAngle endAngle clockwise 在android中 我有3个点 我的圆的中心
  • 如何确定 n 高数字金字塔中的最大路线成本

    我有一个像这样的数字金字塔 7 4 8 1 8 9 2 4 6 7 4 6 7 4 9 4 9 7 3 8 8 routes 32 每个数字都按其系列中的强大程度进行索引 0 9 gt 1 1 8 gt 5 2 8 gt 4 3 7 gt
  • 如何在 Android Q 上将照片广播到图库

    我使用这些代码拍照并将照片广播到画廊 它有效 我发现我的广播功能使用MediaStore Images ImageColumns DATA and Intent ACTION MEDIA SCANNER SCAN FILE 并且这些已被弃用
  • 重定向后丢失会话变量

    用户填写用户名和密码 如果正确 页面会加载一些信息 例如user id到会话变量 该脚本制作了一个header Location 重定向 不知何故 下一页无法识别会话 怎么会 重定向到同一个域 并且所有页面都有session start 我
  • 如何获取viewPager选中的Tab?

    我使用 lib viewpagerindicator 创建了一个 viewpager 该活动扩展了 FragmentActivity 因此我在获取选择哪个选项卡时遇到问题 我的适配器由下面的代码给出 class GoogleMusicAda
  • 刷新 ArrayAdapter onResume [notifyDataSetChanged() 不起作用]

    我正在使用片段创建一个联系人列表应用程序 其中一个片段是联系人列表中的姓名列表 另一个是其余详细信息 这是显示名称列表的类 public class MyListFragment extends ListFragment private C
  • 当用户从android后台删除应用程序时如何检测事件?

    当用户从后台删除我的应用程序时 我需要重置通知 所以我需要一个从后台删除应用程序的事件 请帮帮我 建议表示赞赏 谢谢 亲切的问候 官方安卓文档 Activity onDestroy 您的活动被销毁之前收到的最后一个电话 发生这种情况的原因可

随机推荐

  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • 使用宏打开受信任文档或启用宏时 Excel 崩溃

    正如标题所示 我无法使用宏打开受信任的文档 Excel 立即崩溃 制作文档的副本允许其打开 因为该副本不受信任 并且我可以检查 VB 编辑器中的宏 但启用宏会导致另一次崩溃 为什么会发生这种情况以及我可以采取什么措施来解决它 我今天遇到了类
  • 具有固定顶部菜单的语义 UI 侧边栏

    Semantic UI 对其进行预警侧边栏页面 http semantic ui com modules sidebar html usage 当侧边栏出现时 固定位置内容可能会出现改变其位置的问题 然后它提供了该问题的两种可能的解决方案
  • 在远程 Glassfish 上进行日志记录和/或调试

    我有个问题 我在远程 Glassfish 实例上部署了一个 Web 服务 现在我需要一些简单的日志或调试系统来纠正我的代码 使用简单的打印会更好 我的想法是使用 glassfish 日志文件 因为我可以从管理 GUI 访问它 但它不起作用
  • Angular 7测试重试当模拟http请求无法实际重试时

    我有以下尝试使用 OAuth 的拦截器refresh token每当获得任何 401 错误 响应时 基本上 刷新令牌是在第一个 401 请求上获取的 获取后 代码会等待 2 5 秒 在大多数情况下 第二个请求不会触发错误 但如果触发错误 令
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击
  • Symfony2 条件服务声明

    我目前正在尝试找到一个可靠的解决方案来动态更改 Symfony2 服务的依赖关系 详细信息 我有一个服务 它使用 HTTP 驱动程序与外部 API 进行通信 class myAwesomeService private httpDriver
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod
  • 在方法内部执行方法

    我目前正在 FreeCodeCamp 中进行 JavaScript 练习 我的代码应该使用的测试用例之一是函数调用 如下所示 addTogether 2 3 这是我得到的基本功能 function addTogether return 当我
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • AngularJS 在指令运行之前通过 AJAX 检索数据

    我正在使用 AngularUIuiMap http angular ui github com directives map实例化谷歌地图的指令 uiMap 指令非常适合处理硬编码数据 mapOptions and myMarkers 但是
  • KeyPressed 和 KeyTyped 混淆[重复]

    这个问题在这里已经有答案了 我搜索过之间的区别KeyPressedand KeyTyped事件 但我仍然不清楚 我发现的一件事是 Keypressed 比 KeyTyped 首先被触发 请澄清一下这些事件何时被准确触发 哪个适合用于哪个目的
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何使用 NavigationService.Navigate 传递查询字符串变量?

    问候 搜索了这个 但没有运气 我正在尝试在我的 Silverlight 4 应用程序中传递查询字符串变量 然后检索它们 首先我尝试了这个 this NavigationService Navigate new Uri LoanProduct
  • 搜索多维数组 JavaScript

    我有一个如下所示的数组 selected products 0 r1 7up 61 Albertsons selected products 1 r3 Arrowhead 78 Arrowhead selected products 2 r
  • 如何在 Sympy 中将 `sin(x)^2` 重写为 cos(2*x) 形式

    在 Mathematica 等其他 CAS 中很容易获得这样的重写 TrigReduce Sin x 2 1 2 1 Cos 2 x 然而 在 Sympy 中 trigsimp所有方法测试返回sin x 2 trigsimp sin x s
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja