java - 如何在android中使用文件发送参数

标签 java php android

我在android中上传图片。目前我的代码只上传文件,但我也想发送一些参数。我正在尝试关注

FileInputStream fileInputStream = new FileInputStream(sourceFile);
        URL url = new URL(upLoadServerUri);
        conn = (HttpURLConnection) url.openConnection(); // Open a HTTP  connection to  the URL
        conn.setDoInput(true); // Allow Inputs
        conn.setDoOutput(true); // Allow Outputs
        conn.setUseCaches(false); // Don't use a Cached Copy
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Connection", "Keep-Alive");
        conn.setRequestProperty("ENCTYPE", "multipart/form-data");
        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
        conn.setRequestProperty("uploaded_file", fileName);
        dos = new DataOutputStream(conn.getOutputStream());

        dos.writeBytes(twoHyphens + boundary + lineEnd);
        dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""+ fileName + "\"" + lineEnd);
        dos.writeBytes(lineEnd);

        //Sending data
        dos.writeBytes(twoHyphens + boundary + lineEnd);
        dos.writeBytes("Content-Disposition: form-data; name=\"paramName\"" + lineEnd);
        dos.writeBytes(lineEnd);
        dos.writeBytes(globalUID);

在服务器端我使用的是 php。这是我试图获取该参数的方式

$param = $_POST["paramName"];
target_path1 = "./places_photos/" . $param;

但我当前的代码确实上传了文件,但没有发送参数。如何发送参数以及如何在服务器端获取它们?

更新

目前,图像保存在 $target_path1 变量中提到的 places_photos 目录中。我想要的是将该图像保存在用户目录中,并将该目录命名为用户 ID。但不幸的是,我没有在服务器端获得用户标识。如何将用户 ID 与文件一起发送到服务器?

最佳答案

在这之后应该还有一个lineEnd:

dos.writeBytes(twoHyphens + boundary + lineEnd);
    dos.writeBytes("Content-Disposition: form-data; name=\"paramName\"" + lineEnd);
    dos.writeBytes(lineEnd);
    dos.writeBytes(globalUID);
    dos.writeBytes(lineEnd); <-- add this

还要确保添加多部分边界的末尾(以“--”开头的行)在您的情况下,添加:

dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

关于java - 如何在android中使用文件发送参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11162898/

相关文章:

php - Mysql插入和更新未知错误

php - ssh2 上的 opendir 永远不会停止

java - Android Gradle 插件需要 Java 11 才能运行。您当前使用的是 Java 1.8。错误

android - Android 中的 Twitter App 如何在 ListView 中缓存/存储推文?

java - Hibernate @OneToOne 不映射 id

java - 谷歌应用引擎中的排序结果

java - 谷歌地图坐标转义

php - PDOStatement 到 JSON

android - 删除选定行后的 ListView 动画行

java - 如何检查用户输入是否是字符串