Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
http post不会在关闭我的项目Delphi时上载文件并获取vialotion的访问权限_Delphi_Http Post_Indy_Access Violation_Delphi Xe7 - Fatal编程技术网

http post不会在关闭我的项目Delphi时上载文件并获取vialotion的访问权限

http post不会在关闭我的项目Delphi时上载文件并获取vialotion的访问权限,delphi,http-post,indy,access-violation,delphi-xe7,Delphi,Http Post,Indy,Access Violation,Delphi Xe7,我有两个问题 1: 我的应用程序是这样工作的: 添加我要将其上载到列表框的文件路径,因此将我先前添加到列表框的所有文件逐个上载到我的服务器 问题是,文件没有上传,我收到这些错误消息未连接,有时我收到断开消息 2: 当我关闭我的应用程序时,出现访问冲突错误 我想这是因为TIdMultiPartFormDataStream 我怎样才能解决这些问题 这是我的代码 注意:我使用IdHttp上传文件,并且我没有更改它们的属性,只是将其放到我的应用程序中并使用它 var StreamSendFiles:

我有两个问题

1:

我的应用程序是这样工作的: 添加我要将其上载到列表框的文件路径,因此将我先前添加到列表框的所有文件逐个上载到我的服务器

问题是,文件没有上传,我收到这些错误消息
未连接
,有时我收到
断开
消息

2:

当我关闭我的应用程序时,出现访问冲突错误

我想这是因为
TIdMultiPartFormDataStream

我怎样才能解决这些问题

这是我的代码

注意:我使用
IdHttp
上传文件,并且我没有更改它们的属性,只是将其放到我的应用程序中并使用它

var
  StreamSendFiles: TIdMultiPartFormDataStream;
begin
  StreamSendFiles := TIdMultiPartFormDataStream.Create;
  try
    StreamSendFiles.AddFile('upload_file', ListBox1.Items[0]);
    try
      IdHTTP1.Post('http://myserver.com/files', StreamSendFiles);
      ListBox1.Items.Delete(0);
    except
      on E: Exception do
        ShowMessage(' "Files" Error encountered during POST: ' + E.Message);
    end;
  finally
    StreamSendFiles.Free;
  end;
end;

您显示的代码没有问题。您的AV错误与此代码无关。至于套接字错误,我猜测服务器端正在断开连接。使用数据包嗅探器进行验证。可能服务器不喜欢您的
POST
数据。您确定服务器希望以
多部分/表单数据
POST开始吗?为什么要使用
multipart/form data
发送没有关联元数据字段的单个文件?如果服务器允许Put而不是POST,您也可以使用
TIdHTTP.Put()
。@RemyLebeau,是的,我确定,我的服务器需要
多部分/表单数据
,我使用它是因为它允许我同时上载文件和发送POST数据!如果我想丢弃它,我必须用什么来代替它???(
multipart/formdata
)我不明白你在说什么。请澄清。@RemyLebeau,我需要问你另一个问题,上传完文件后我如何读取服务器的响应???因为我想知道上传过程是否完成
Post()
是一个阻止函数,在上传完成之前它不会退出。如果post失败,
post()
将引发异常。上面的代码已经说明了这一点。您显示的代码没有问题。您的AV错误与此代码无关。至于套接字错误,我猜测服务器端正在断开连接。使用数据包嗅探器进行验证。可能服务器不喜欢您的
POST
数据。您确定服务器希望以
多部分/表单数据
POST开始吗?为什么要使用
multipart/form data
发送没有关联元数据字段的单个文件?如果服务器允许Put而不是POST,您也可以使用
TIdHTTP.Put()
。@RemyLebeau,是的,我确定,我的服务器需要
多部分/表单数据
,我使用它是因为它允许我同时上载文件和发送POST数据!如果我想丢弃它,我必须用什么来代替它???(
multipart/formdata
)我不明白你在说什么。请澄清。@RemyLebeau,我需要问你另一个问题,上传完文件后我如何读取服务器的响应???因为我想知道上传过程是否完成
Post()
是一个阻止函数,在上传完成之前它不会退出。如果post失败,
post()
将引发异常。上面的代码已经说明了这一点。