Zak*_*aki 5 c# pdf asp.net uri stream
我有一个PDF,主题是http://test.com/mypdf.pdf.
如何将PDF转换为Stream然后使用此Stream转换回PDF.
我尝试了以下但有例外(见图):
private static Stream ConvertToStream(string fileUrl)
{
HttpWebResponse aResponse = null;
try
{
HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(fileUrl);
aResponse = (HttpWebResponse)aRequest.GetResponse();
}
catch (Exception ex)
{
}
return aResponse.GetResponseStream();
}
Run Code Online (Sandbox Code Playgroud)

这将有效:
private static Stream ConvertToStream(string fileUrl)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
try {
MemoryStream mem = new MemoryStream();
Stream stream = response.GetResponseStream();
stream.CopyTo(mem,4096);
return mem;
} finally {
response.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,您对返回的内存流的生命周期负全部责任.
更好的方法是:
private static void ConvertToStream(string fileUrl, Stream stream)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileUrl);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
try {
Stream response_stream = response.GetResponseStream();
response_stream.CopyTo(stream,4096);
} finally {
response.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
using (MemoryStream mem = new MemoryStream()) {
ConvertToStream('http://www.example.com/',mem);
mem.Seek(0,SeekOrigin.Begin);
... Do something else ...
}
Run Code Online (Sandbox Code Playgroud)
您也可以直接返回响应流,但是您必须检查其生命周期,释放响应可能会释放流,因此mem copy.
你可能想看看WebClient.DownloadFile.
您给它一个URL和本地文件名,它将文件直接保存到磁盘.可能会为您节省一两步.
您也可以尝试WebClient.DownloadData将文件保存到内存中byte[].
编辑
您没有指定要将文件发布到的Web服务的协议.最简单的形式(RESTful)只是将文件POST到另一个URL的数据.这是你如何做到这一点.
using (WebClient wc = new WebClient())
{
// copy data to byte[]
byte[] data = wc.DownloadData("http://somesite.com/your.pdf");
// POST data to another URL
wc.Headers.Add("Content-Type","application/pdf");
wc.UploadData("http://anothersite.com/your.pdf", data);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是SOAP,则必须将文件转换为Base64字符串,但希望您使用的是生成的客户端,它会为您处理.如果您可以详细说明您要将文件发送到的Web服务类型,我可能会提供更多信息.
| 归档时间: |
|
| 查看次数: |
10024 次 |
| 最近记录: |