我要做的是......
让用户使用WCF选择PDF文件和其他一些文件......一旦他们选择了文件......那些文件需要从那里移动到远程服务器(公司托管)。我正在尝试反序列化数据(将其作为字节读取)并将其传输。我创建了一个表单作为测试目的,并了解我的客户端将如何工作。
当我收到文件....我可以显示文件,但我想恢复实际的PDF,我无法做到这一点。我可以在记事本中打开文件(但是它的字节格式),当我尝试用PDF打开它时,它表示不支持文件格式。我真的很困惑,不知道需要做什么。
非常感谢您的帮助。
Code Snippet:
客户端:
private void btnUploadFile_Click(object sender, EventArgs e)
{
string pathServer = @"C:\Users\....\Desktop\Test.pdf";
RestClient newClient = new RestClient("http://localhost:...../Service1.svc/DisplayRawData");
var request = new RestRequest(Method.GET);
request.RequestFormat = DataFormat.Json;
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
IRestResponse<TempString> newResponse = newClient.Execute<TempString>(request);
//List<TempString> rtrn = (List<TempString>)newResponse.Data;
var responseData = newClient.DownloadData(request);
FileStream fStream = new FileStream(pathServer, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fStream);
bw.Write(responseData);
bw.Close();
foreach (var xbyte in responseData)
{
// fStream.WriteByte(xbyte);
}
//fStream.Flush();
fStream.Close();
Server Side (Service)
public string DisplayRawData()
{
string path = @"C:\basketball.pdf";
byte[] fileToSend = File.ReadAllBytes(path);
string filetoSendB64 = Convert.ToBase64String(fileToSend);
// WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
return filetoSendB64;
}
Interface
//Getting Stream from a File
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "DisplayRawData",
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
// string DisplayRawData();
string DisplayRawData();
答案 0 :(得分:1)
代码有点令人困惑,但我想说在将其写入文件之前,您需要将响应字符串从Base64解码回字节数组。