【问题标题】:POST file contents as Byte[] from PHP application to .NET ASP将文件内容作为 Byte[] 从 PHP 应用程序发布到 .NET ASP
【发布时间】:2011-10-12 16:21:19
【问题描述】:

我需要从 PHP 以 Byte[] 的形式将文件的内容发布到网页 (C#)。我尝试过使用cURLstream_context_create(),但我认为归根结底是我如何读出文件。

我的帖子内容/CURLOPT_POSTFIELDS 看起来像:

$data .= "\r\n--" . $boundary . "\r\n";
$data .= "Content-Disposition: form-data; name=\"file\"; filename=\"" . $files['name'][$id] . "\"\r\n";
$data .= "Content-Type: application/octet-stream\r\n\r\n";
$data .= file_get_contents($files['tmp_name'][$id]) . "\r\n";
$data .= "--" . $boundary . "--\r\n";

但这根本行不通。

Post byte array from PHP to .NET WCF Servicefile_get_contents() 是兼容的 - 但我没有找到任何证据。

http://bytes.com/topic/php/answers/869014-how-convert-gif-file-byte-array-thanks 表示这是不可能的。 (没有什么是不可能的!)

我也尝试过使用 fread() fopen()file() 等的变体

PS 我知道 Web 服务运行良好,因为 C++/Java 等中的一个有点相同的脚本运行良好。 file.readAll()file_get_contents() 行的唯一区别...

感谢任何 insigtfull cmets 或解决我问题的答案!

【问题讨论】:

    标签: php .net curl bytearray


    【解决方案1】:

    file_get_contents() 是兼容的。它将根据您的问题返回文件内容的二进制字符串,这就是您要查找的内容。只是为了提前澄清这一点。

    我假设您在其他地方有错误,或者您在错误的上下文中使用了该数据。从你的问题中我不清楚哪里。

    我在您的代码中看到的是,您没有进行任何错误检查和处理。

    在您的 PHP 配置中将 PHP 的错误处理设置为最高级别并记录错误。然后监控错误日志。

    还要检查文件上传过程中的错误,the PHP Manual has a complete entry about how it works incl。文件上传的错误处理。

    【讨论】:

    • 我倾向于同意这个错误很可能在我的最后。我确实有很多关于这个地方的尝试,以及一个标准的if ($err === UPLOAD_ERR_OK)。该表单肯定会发布到服务器,并且内容长度与我正在上传的文件的大小一致。我会尝试增加错误处理(据我所知它已经被最大化了)但是..
    • 至少对于file_get_contents 行,我没有看到错误检查,其他注释只是一个提示,因为人们往往会忘记它。
    • 为了简单起见,我把它拿出来了 ^
    • @Vanthel:哦,好吧。所以我认为你应该hexdump二进制字符串并三重检查你正在访问正确的文件。
    • 好吧,使用网络嗅探器并确保您发送的数据符合您预期的传输格式。应该可以帮助您找到损坏的地方。
    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2022-06-29
    相关资源
    最近更新 更多