gpt4 book ai didi

php - 将文件上传到Web服务器Delphi + php

转载 作者:行者123 更新时间:2023-12-02 01:30:21 25 4
gpt4 key购买 nike

我正在开发一个程序,我需要通过 http 将“log.txt”上传到网络服务器。

我已经搜索并找到了这个:-

德尔福XE:

procedure TForm1.Button1Click(Sender: TObject);
begin
idhttp1.Post('http://127.0.0.1/GET2.php', 'C:\Users\Someone\Desktop\log.txt')
end;
<小时/>

php:-

<?php
$uploaddir = "uploads/";
$uploadfile = $uploaddir . basename( $_FILES['file']['name']);

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))
{
echo "The file has been uploaded successfully";
}
else
{
echo "There was an error uploading the file";
}
?>
<小时/>

但没有上传文件

感谢您的帮助

最佳答案

阅读 PHP 文档。

您的 PHP 代码正在使用 $_FILES ,它期望客户端以 MIME multipart/form-data 格式发布 HTML Web 表单:

Handling file uploads > POST method uploads

PHP is capable of receiving file uploads from any RFC-1867 compliant browser.

RFC 1867 Form-based File Upload in HTML

但是,该格式并不是您的应用程序实际发布的格式。它只是按原样发布原始文件内容,没有 MIME 元数据来描述该文件。这就是您的 PHP 代码无法运行的原因。

要使用 TIdHTTP.Post() 发布 multipart/form-data HTML 网络表单,您必须使用 TIdMultipartFormDataStream 类,例如:

uses
..., IdHTTP, IdMultipartFormDataStream;

procedure TForm1.Button1Click(Sender: TObject);
var
PostData: TIdMultipartFormDataStream;
begin
PostData := TIdMultipartFormDataStream.Create;
try
PostData.AddFile('file', 'C:\Users\Someone\Desktop\log.txt');
idhttp1.Post('http://127.0.0.1/GET2.php', PostData)
finally
PostData.Free;
end;
end;

或者,PHP 还支持文件上传的 HTTP PUT 请求:

Handling file uploads > PUT method support

procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
begin
FS := TFileStream.Create('C:\Users\Someone\Desktop\log.txt', fmOpenRead or fmShareDenyWrite);
try
idhttp1.Put('http://127.0.0.1/log.txt', FS);
finally
FS.Free;
end;
end;
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");

/* Open a file for writing */
$fp = fopen("log.txt", "w");

/* Read the data 1 KB at a time
and write to the file */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>

关于php - 将文件上传到Web服务器Delphi + php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com