0
我需要發送一個HttpPostedFileBase到一個wcf服務器來處理在服務器上運行的用戶點擊「上傳文件」按鈕後從網頁前端處理的內容。我首先在服務合同中使用了HttpPostedFileBase,但它不起作用。然後我嘗試將HttpPostedFileBase放入數據合同中,但仍然無法使用。我掙扎了兩天來解決這個問題。現在這裏是方法:WCF發送HttpPostedFileBase服務進行處理
在服務合同:
[ServiceContract]
public interface IFileImportWcf
{
[OperationContract]
string FileImport(byte[] file);
}
並發現這兩種方法,將字節[]以流,反之亦然。
public byte[] StreamToBytes(Stream stream)
{
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, bytes.Length);
stream.Seek(0, SeekOrigin.Begin);
return bytes;
}
public Stream BytesToStream(byte[] bytes)
{
Stream stream = new MemoryStream(bytes);
return stream;
}
在控制器:
[HttpPost]
public ActionResult Import(HttpPostedFileBase attachment)
{
//convert HttpPostedFileBase to bytes[]
var binReader = new BinaryReader(attachment.InputStream);
var file = binReader.ReadBytes(attachment.ContentLength);
//call wcf service
var wcfClient = new ImportFileWcfClient();
wcfClient.FileImport(file);
}
我的問題是:什麼是更好的方式來發送HttpPostedFileBase到WCF服務?
實際上,transferMode應該是「Streamed」,如: – jguo1
嗨,Alex,謝謝你的回答。我會試用。 – jguo1