這是一個非常簡單的問題。MemoryStream:本地還是不是?
C#MemoryStream
是否保存客戶端或服務器上的數據?
例如我有一個表單,當發佈時將一個文件上傳到我的s3存儲桶,但是在它將文件讀入內存流之前。如果該文件必須首先上傳到服務器並保存在服務器上的MemoryStream
,那麼這很糟糕,我需要重新考慮我的解決方案。
如果MemoryStream
是客戶端本地的,那麼這很好。
這是一個非常簡單的問題。MemoryStream:本地還是不是?
C#MemoryStream
是否保存客戶端或服務器上的數據?
例如我有一個表單,當發佈時將一個文件上傳到我的s3存儲桶,但是在它將文件讀入內存流之前。如果該文件必須首先上傳到服務器並保存在服務器上的MemoryStream
,那麼這很糟糕,我需要重新考慮我的解決方案。
如果MemoryStream
是客戶端本地的,那麼這很好。
MemoryStream將數據保存在系統內存(RAM)中。所以它將在任何計算機上運行代碼。
在這種情況下,您似乎在說您的服務器端代碼正在使用MemoryStream來存放來自表單POST的數據。通常最好將文件保存到磁盤上的臨時位置,而不是試圖將整個文件保存在內存中。或者,如果您希望接受真正的大文件,而且您不需要執行任何中間處理,則可以直接向s3執行直通流。這樣做的危險在於,如果上傳無法完成,則可能需要更多努力來確保正確清理內容。
所以當我發佈一個文件到我的WebApi,當它加載它進入MemoryStream,這是服務器上的RAM? – r3plica
@ r3plica:正確。 – StriplingWarrior
內存流背後的內存是C#代碼運行的地方。所以它是本地的,它甚至不知道有一臺服務器。 – CodesInChaos
你的C#是本地的。 「MemoryStream」意味着它在內存中。鑑於無法確定您的服務器正在運行的是什麼...... C#只能更改客戶端。因此內存是指LOCAL。 – Aron
或者你有關於ASP.NET webforms的一些非常混淆的假設?這裏的客戶端是JavaScript和服務器C#?在這種情況下,內存流將分配到您的服務器上,而不是在亞馬遜的服務器上,而不是在瀏覽器中。 – CodesInChaos