2013-12-16 76 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