2013-12-16 77 views
0

因此,我正在构建一个类似连接器的程序(可执行文件)作为网站的后端,该程序使用C#编写在Visual Studio 2010(.NET 4.0)中。Post File To Executable

基本上,前端代码会用参数(或命令行参数)调用可执行文件,然后程序会调用不同的函数并执行相应的操作。

现在我遇到了上传文件的问题。该网站将要求用户浏览文件,然后点击上传按钮。一旦上传按钮被击中,网站将调用可执行文件。我的想法是在可执行文件中,以某种方式获取上传的文件并在本地服务器上保存副本,然后对本地副本执行任何修改。

希望我解释得很好。所以我的在所有问题上是:有没有办法让我的可执行文件基本上得到上传文件?

我知道可能还有其他解决方法,例如将POST请求直接发送到一个url,但这不是这种情况。使用网站和后端代码的当前设置,需要使用独立的可执行文件。

任何帮助表示赞赏,谢谢!

+0

如果'stdio'(请参见Slaks的答案)不够,那么通常需要将发布的文件写入临时文件(即在实际的操作系统临时区域中),并传递临时文件的路径文件到exe。唯一可以想到的另一个选择是“命名管道”,但这是大大的矫枉过正。 –

回答

3

您可以将传入文件写入可执行进程'StandardInput

+0

感谢您的快速回复。你可以举一个如何使用StandardInput的例子吗?我正在阅读MSDN网站,我无法真正了解如何将它与上传文件一起使用。假设用户正在尝试上传一个名为test1.xlsx的文件到我的exe文件'myProgram.exe'中,其参数为'op1'和'op2'。在我的代码为我的可执行文件,我应该使用myPorcess.StartInfo.FileName =“test1.xlsx”;?以及如何将该文件传递给可执行文件?它只是一个指定文件名的参数,还是一个POST重新启动的exe文件? – sora0419

+0

磁盘上没有任何文件。相反,您需要将通过网络接收的字节写入标准输入:'postFile.Stream.CopyTo(process.StandardInput.BaseStream)'。 – SLaks