【问题标题】:PHP doesn't recognize POST Upload done with HttpClientPHP 无法识别使用 HttpClient 完成的 POST Upload
【发布时间】:2011-04-19 02:57:02
【问题描述】:

Java 代码:

            HttpClient httpclient = new DefaultHttpClient();

        HttpPost httppost = new HttpPost(
                "http://localhost/SC/upload.php");

        FileBody bin = new FileBody(f3);

        MultipartEntity reqEntity = new MultipartEntity();
        reqEntity.addPart("bin", bin);

        httppost.setEntity(reqEntity);

        System.out
                .println("executing request " + httppost.getRequestLine());
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity resEntity = response.getEntity();

        System.out.println("----------------------------------------");
        System.out.println(response.getStatusLine());
        if (resEntity != null) {
            System.out.println("Response content length: "
                    + resEntity.getContentLength());
            System.out.println("Chunked?: " + resEntity.isChunked());
            System.out.println("Response: "
                    + EntityUtils.toString(resEntity));
        }
        if (resEntity != null) {
            resEntity.consumeContent();
        }

PHP 代码:

    <?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }

print_r ($_FILES);
?> 

每次我运行 Java 代码时,我总是得到:

执行请求 POST http://localhost/SC/upload.php HTTP/1.1 -------------------------------------- HTTP/1.1 200 正常 响应内容长度:241 分块?:假 响应:上传:
类型:
大小:0 Kb
存储在:数组 ( [bin] => 数组 ( [名称] => File.tar.lzma [类型] => [tmp_name] => [错误] => 1 [大小] => 0 ) )

我已经通过正常的 http 上传(通过网络浏览器,相同的文件)对其进行了测试,它可以正常工作。

我做错了什么?

编辑:f3 是一个文件(我知道存在,(/home/me/Desktop/File.tar.lzma))

【问题讨论】:

  • 我不知道你的 Java 出了什么问题,但我确定不是你的 PHP。
  • 你能告诉我们更多关于f3的信息吗?
  • 编辑:f3 是一个文件(我知道存在,(/home/me/Desktop/File.tar.lzma))
  • 在这种情况下,如果你对http协议足够了解,安装wireshark并读取数据传输。你会发现 http post 命令缺少了一些东西。对于这种情况,wireshark 是最好的调试工具。
  • 我不太懂http,但我一定会试试这个。

标签: java php file-upload


【解决方案1】:

事实证明,这确实是一个 php 最大文件大小问题,虽然它在限制(2M)之下,但我不知道 java 代码正在向文件中添加部分(在 TAR 代码中)

增加限制解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多