使用 Koush Ion 库上传多部分文件

2023-12-08

在我的上一个应用程序中我将使用库什离子图书馆。它非常方便,但我在将文件上传到我的休息服务器时遇到问题。 注意:我的服务器对成功上传过程的响应是1

我的代码我喜欢这样:

public class MainActivity extends Activity {

    Button upload, login;
    TextView uploadCount;
    ProgressBar progressBar;
    String token, FilePath;

    Future<String> uploading;

    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        upload      = (Button) findViewById(R.id.upload);
        uploadCount = (TextView) findViewById(R.id.upload_count);
        progressBar = (ProgressBar) findViewById(R.id.progress);
        token       = "147c85ce29dc585966271280d59899a02b94c020";
        FilePath    = Environment.getExternalStorageDirectory().toString()+"/police.mp3";


        upload.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (uploading !=null && !uploading.isCancelled()){
                    resetUpload();
                    return;
                }

                upload.setText("Uploading...");

                uploading = Ion.with(MainActivity.this)
                            .load("http://myserver.com/api/v1/tone/upload/?token="+token)
                            .setLogging("UPLOAD LOGS:", Log.DEBUG)
                            .uploadProgressBar(progressBar)
                            .uploadProgressHandler(new ProgressCallback() {

                                @Override
                                public void onProgress(int downloaded, int total) {
                                    uploadCount.setText("" + downloaded + "/" + total);

                                }
                            })
                            .setMultipartParameter("title", "police")
                            .setMultipartParameter("category", "7")
                            .setMultipartFile("file_url", new File(FilePath))
                            .asString()
                            .setCallback( new FutureCallback<String>() {

                                @Override
                                public void onCompleted(Exception e, String result) {
                                    // TODO Auto-generated method stub

                                }
                            })
                            ;
            }
        });

但我从服务器收到 TimeoutException。我的问题是: 1.我所做的选择文件的方法正确吗? 2. 应该使用 Future Callback 作为 String 吗?!

posting data to web serveer with webform

我通过 fiddler2 检查对服务器的请求,当我尝试将文件上传到服务器时...它显示请求发送,已发送多部分参数,但是当尝试发送文件时...fiddler 显示错误:

Protocol Violation Report:
Content-Length mismatch: Request Header indicated 455 bytes, but client sent 387 bytes.

我实际上为我工作,这是我的代码:

final File fileToUpload = new File(localFilePath);
Ion.with(context)
            .load(Urls.UPLOAD_PICTURE)
            .uploadProgressHandler(new ProgressCallback() {
                @Override
                public void onProgress(long uploaded, long total) {
                    // Displays the progress bar for the first time.
                    mNotifyManager.notify(notificationId, mBuilder.build());
                    mBuilder.setProgress((int) total, (int) uploaded, false);
                }
            })
            .setTimeout(60 * 60 * 1000)
            .setMultipartFile("upload", "image/jpeg", fileToUpload)
            .asJsonObject()
                    // run a callback on completion
            .setCallback(new FutureCallback<JsonObject>() {
                @Override
                public void onCompleted(Exception e, JsonObject result) {
                    // When the loop is finished, updates the notification
                    mBuilder.setContentText("Upload complete")
                            // Removes the progress bar
                            .setProgress(0, 0, false);
                    mNotifyManager.notify(notificationId, mBuilder.build());
                    if (e != null) {
                        Toast.makeText(context, "Error uploading file", Toast.LENGTH_LONG).show();
                        return;
                    }
                    Toast.makeText(context, "File upload complete", Toast.LENGTH_LONG).show();
                }
            });
}

希望它对某人有帮助:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Koush Ion 库上传多部分文件 的相关文章

随机推荐

  • ANSI 颜色集图形渲染在批次中中断并在继续后工作

    我有一个批处理 其中有一个子部分 该子部分迭代 EXE 文件的行以尝试运行 然后该批处理根据 EXE 的退出代码对 EXE 进行排序 由于某种原因 ANSI SGR 在设置前一个图形渲染而不是重新渲染后似乎会破坏或回显文字文本 我回去重新参
  • 如何对 pandas 数据帧上的最大和最小时间戳进行分组

    我想对数据集进行分组并返回最大和最小时间戳 这是我的数据 id timestamp 1 2017 09 17 10 09 01 2 2017 10 02 01 13 15 1 2017 09 17 10 53 07 1 2017 09 17
  • 如何激活全屏控制DOTS(SDK14)

    有人知道我的意思吗 在我的 Galaxy Nexus 上的新相机应用程序的全屏模式下 控制按钮变为 3 个点 我如何以编程方式激活它 您可以使用 getWindow getDecorView setSystemUiVisibility Vi
  • 使用 Jest 模拟命名导入

    我有一个 notifications js 模块 看起来有点像这样 import Notifications Permissions from expo export function setLocalNotification storag
  • 将收集数据从 HTML/Razor 表单发送/发布到 MVC 操作参数模型

    我正在开发一个项目 使用 ASP NET MVC 5 帮助学生和顾问选择下学期的最佳课程 第一步是让学生从列表中选择他已经选修的课程 显示列表的控制器是 public ActionResult AddCourseVM int id Stud
  • 简单的 CSS 动画循环 – 淡入和淡出“正在加载”文本

    如果没有 Javascript 我想制作一个简单的循环 CSS 动画类 可以无限地淡入和淡出文本 我对 CSS 动画了解不多 所以我还没有弄清楚 但这是我已经取得的进展 keyframes flickerAnimation flame pu
  • postgres 中多列的聚合函数

    我有一个 postgresql 表 其中包含多个包含整数的字段 a1 a2 a3 等 我想一次在多个列上运行聚合函数 均值 标准差等 其中一些可能有合理数量的空值 所以我不想只生成列平均值 然后对它们进行平均 我可以得到一组整数 SELEC
  • 我应该如何验证传递到 WCF 服务的参数?

    通常 您使用以下命令检查公共方法中的传入参数if then throw模式或代码合同 我的问题是 我应该如何验证 WCF 服务中传递的参数 例如 我有以下合同 OperationContract Stock GetStock string
  • 在模型 Firebase 上保存 userId

    我有一个与如何使用 firebase 保存用户信息相关的问题 我扩展了用户身份验证 并在 json 树上创建了一个新的用户节点 每个用户都有由 firebase 生成的自己的 id 并且用户信息位于该密钥 id 内 问题是 每次我这样做时
  • 如何在代理后面推送到heroku?

    我在大学的代理服务器后面使用 git 在尝试执行时 git push heroku master 我收到一个错误 ssh connect to host proxy heroku com port 22 Bad file number fa
  • 将 CSV 扫描到变量

    我有一个像这样的 CSV 一行 101 120 130 我怎样才能将它们扫描成这样的变量 pt num 101 x 120 y 130 只需使用csvread M csvread filename csv pt num M 1 x M 2
  • 如何通过查询获取MySQL中的数据库结构?

    是否有可能以某种方式获取 MySQL 数据库的结构 或者只是一些带有简单查询的表 或者还有其他方法吗 我该怎么做 我认为你所追求的是DESCRIBE DESCRIBE table 您还可以使用SHOW TABLES SHOW TABLES
  • 为什么在这种情况下使用泛型会出现 ClassCastException?

    这是代码 一个简单的泛型类并尝试将一个整数分配给aa 0 public class GenericTest
  • 如果无法传递 POST 响应,如何回滚事务

    使用 Spring MVC 假设我已经实现了一个控制器 用于处理 POST 请求 在事务内执行数据库操作 并在响应正文中返回结果 这是控制器和服务层 RestController RequiredArgsConstructor public
  • 等待具有不同结果的多个任务

    我有3个任务 private async Task
  • Conda UnsatisfiableError 即使看起来没有任何冲突

    例如 我有以下内容environment yml file name harmonic backend channels conda forge dependencies python 3 8 10 apache beam 2 31 0 p
  • 如何指定WPF Image使用的图像缩放算法?

    有没有办法指定图像如何按比例放大Image元素与LayoutTransform设置为ScaleTransform具有整数值ScaleX and ScaleY 我想清晰地显示缩放后的图像 即使用 最近邻 缩放 而不会模糊 想象一下您希望位图编
  • 为什么需要重新声明重载的虚函数?

    我有一个带有两个重载函数的基类f void and f int 班上Derived实施f int 通过致电f void Derived2实施f void only 编译器拒绝执行Derived f int 因为它想打电话f int 但我没有
  • 使用javascript根据html中的下拉选择显示和隐藏div元素

    我有一个使用 javascript 在使用下拉菜单时显示隐藏 div 的问题 代码适用于链接和按钮 但我询问是否有任何方法可以重写它 以便它可以使用 SELECT 选项 就像如果我从下拉列表中选择 显示 它将向我显示包含 Hello wor
  • 使用 Koush Ion 库上传多部分文件

    在我的上一个应用程序中我将使用库什离子图书馆 它非常方便 但我在将文件上传到我的休息服务器时遇到问题 注意 我的服务器对成功上传过程的响应是1 我的代码我喜欢这样 public class MainActivity extends Acti