将流转换为文件

时间:2014-02-25 21:48:35

标签: c# wcf

我正在使用WCF网络服务,我很好奇是否有任何方法可以将Stream转换为文件。 偶尔我在post方法上遇到“交叉原始请求错误”问题,我意识到每当我收到Stream数据时都没有问题。 但现在我想以同样的方式将图像发布到我的方法(如果有办法)

这是我的代码:

[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveImage")]
public bool SaveImage(Stream streamData){
   // read the streamData
   // convert streamData to File
   // with something like this: new FileStream(..streamData);
 return true;
}

编辑:

Html代码:

<form><input type="file" name="file"/><div id="send">send</div></form>

Jquery ajax:

 $('#send').click(function () {
    var allDataFromTheForm = new FormData($('form')[0]);
    $.ajax({
        url: "/url/SaveImage",
        type: "POST",
        data: allDataFromTheForm,
        cache: false,
        contentType: false,
        processData: false,
        success: function (result) {
            alert(result);
        }
    });
});

2 个答案:

答案 0 :(得分:3)

没有参考方便,但它是这样的

using(Stream fileStream = File.CreateFile(...))
{
    streamData.CopyTo(fileStream);
}

答案 1 :(得分:1)

你可以这样做:

string sFileName = "myimage.jpg";
using (Stream f = File.Create(sFileName))
{
    streamData.Seek(0, SeekOrigin.Begin);
    streamData.CopyTo(f);
}

编辑: This excellent answer还涵盖其他.NET版本。