Asp.net 将PDF从Cloudinary转换为邮件附件将MemoryStream转换为流
我正在尝试将存储在Asp.net 将PDF从Cloudinary转换为邮件附件将MemoryStream转换为流,asp.net,cloudinary,Asp.net,Cloudinary,我正在尝试将存储在Cloudinary上的PDF转换为System.Net.Mail附件: private static Attachment CreateAttachementFromMessage(Stream stream) { var memoryStream = new MemoryStream(); stream.CopyTo(memoryStream); return new Attachm
Cloudinary
上的PDF转换为System.Net.Mail附件
:
private static Attachment CreateAttachementFromMessage(Stream stream)
{
var memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
return new Attachment(
memoryStream,
"Anhang zur Bestellung",
"application/pdf"
);
}
溪流:
var stream = getFileStream(resourceId);
private getFileStream(resourceId){
var imageData=_cloudinary.GetResource(resourceId);
if (imageData.StatusCode != HttpStatusCode.OK)
{
return null;
}
var downloadUrl = _cloudinary.Api.UrlImgUp.Secure().BuildUrl(resourceId);
if (string.IsNullOrEmpty(downloadUrl))
{
return null;
}
return DownloadStream(new Uri(downloadUrl));}
}
流不为null,但邮件内容本身似乎无效。
文件大小小得多(系数4),无法打开
有什么想法吗?创建流、转换流或创建附件是否有问题
编辑:
将流复制到memorystream:
编辑2:实际附件内容:
如果有人关心:
通过base64进行转换,工作正常:
using (BinaryReader b = new BinaryReader(stream))
{
byte[] binData = b.ReadBytes((int) stream.Length);
String result = Convert.ToBase64String(binData);
var decodedFile = Convert.FromBase64String(result);
var mediaType = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Image.Jpeg).MediaType;
return new Attachment(
new MemoryStream(decodedFile),
$"Anhang zur Bestellung.{mediaType}",
mediaType
);
似乎有点不必要,但方法
stream.CopyTo()
对我不起作用啊,我认为问题是stream.Position being不好,不是这样的。请考虑下一个屏幕截图显示实际附件