http post不会在关闭我的项目Delphi时上载文件并获取vialotion的访问权限
我有两个问题 1: 我的应用程序是这样工作的: 添加我要将其上载到列表框的文件路径,因此将我先前添加到列表框的所有文件逐个上载到我的服务器 问题是,文件没有上传,我收到这些错误消息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:
未连接
,有时我收到断开
消息
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()
将引发异常。上面的代码已经说明了这一点。