【问题标题】:how to upload to kinvey only once如何只上传一次到kinvey
【发布时间】:2015-08-16 18:04:52
【问题描述】:

我在delphi中制作了一个将图片上传到kinvey提供程序的程序,首先程序将TImage组件中的图像保存在特定的目录中,然后将其上传到kinvey,问题是每次我打开它上传到kinvey的程序时,现在即使我多次打开程序,如何确保它只上传一次

Image1.Repaint;
Image1.Bitmap.SaveToFile('some dir');
procedure TTabbedwithNavigationForm.Timer2Timer(Sender: TObject);
var
  fn : string;
  Lstream : TFileStream;
  Lfile  : TBackendEntityValue;
begin
 fn := 'the file dir';
 try
Lstream := TFileStream.Create(fn, fmOpenRead);
BackendFiles1.Files.UploadFile(fn,Lstream, 'image/png',Lfile);
finally
Lstream.Free;
BackendFiles1.Free;

end;

end;

end.

【问题讨论】:

  • 在本地放置一些关于您上传的文件的信息。
  • 代码真是一团糟。最后块很差。代码似乎不完整。我认为你可以做得更好。
  • 如果您希望应用程序在实例之间记住某些内容,则必须以持久的方式(DB/文件系统/等)将状态存储在某处。或者,您可以进行某种跨进程通信。最终,这应该与需要更新图像的时间相关联。
  • 我可以轻松地编辑代码,我只关心我的问题@DavidHeffernan
  • 这种态度是你问题的很大一部分。您对我们不够关心,无法使代码清晰易读甚至连贯。它不能编译并且有我们必须猜测其上下文的杂散片段。您没有提供完整的 MCVE,因此我们无法确切知道是什么触发了您的代码执行。您还没有答案,因为您的问题质量很低。如果您需要帮助,您将解决这些问题。

标签: image delphi delphi-xe2 kinvey


【解决方案1】:

方法“Timer2Timer”的名称表明此代码是由一个名为 Timer2 的 Timer 组件触发的。 ;-)

检查这个计时器在哪里被激活。如果它在设计时已启用,则在定义的时间过去后立即调用该事件,独立于任何用户交互。

顺便说一句:最好对流使用 try/finally 块,但流的创建应该直接在“try”之前(否则如果流的创建失败,你会触发 finally 块,然后你就是由于流变量未初始化而导致访问冲突)。

“BackendFiles1.Files;”的调用finally 块内部对我来说似乎已经过时了,那该怎么办?

【讨论】:

  • timer2 在 FormCreat 事件@Udontknow 触发
  • 从图片目录 @Jens Borrisholt 上传的图片
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 2013-01-30
  • 2012-10-29
  • 2011-08-30
相关资源
最近更新 更多