我正在尝试将PDF文件保存到SQL Server,我已经有一个生成PDF的方法,但是打开一个显示该文件的窗口.
但是,现在我必须生成PDF,但必须将其保存到图像字段中的数据库中.
我必须从MemoryStream对象中保存这个文件,我准备保存,显示等.
我有这个:
MemoryStream m = PDFHelper.gereratePDF(text, title);
Run Code Online (Sandbox Code Playgroud)
我正在googling aroung,我想我必须将这个MemoryStream转换为FileStream,所以我可以将它保存到DB,但我不知道如何.
谢谢!!
我有一个流媒体的程序,它创建两个巨大的MemoryStreams,然后在完成后需要将它们归零.问题是,在我调用BOTH MemoryStream.SetLength(0)后,内存似乎没有被回收; 和MemoryStream.Capacity = 0. GC.Collect()似乎解决了这个问题,但我听说这是糟糕的编程习惯,因为它会导致应用程序中的所有线程挂起; 虽然挂起的线程在短时间内不会成为问题,但需要清除内存.但是,如果问题有另一种解决方法,那就太好了.有什么建议?
我正在尝试发送我在内存流中创建的XML文件.当我尝试使用UploadFile并获得无效参数的错误时,问题就出现了.我的问题是,无论如何我可以使用我创建的内存流WebClient.UploadFile来发送文件或者我是否需要以其他方式执行此操作?
string firstname = Request.Headers["firstname"].ToString();
string lastname = Request.Headers["lastname"].ToString();
string organization = Request.Headers["organization"].ToString();
string phone = Request.Headers["phone"].ToString();
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
MemoryStream ms = new MemoryStream();
using (XmlWriter xml = XmlWriter.Create(ms, settings))
{
xml.WriteStartDocument();
xml.WriteStartElement("List");
xml.WriteWhitespace("\n");
xml.WriteStartElement("Employee");
{
xml.WriteElementString("First", firstname);
xml.WriteElementString("Last", lastname);
xml.WriteWhitespace("\n");
xml.WriteElementString("Organization", organization);
xml.WriteElementString("Phone", phone);
}
xml.WriteEndElement();
xml.WriteEndDocument();
}
WebClient client = new WebClient();
client.UploadFile("http://test.com/test.aspx", ms);
Run Code Online (Sandbox Code Playgroud) 假设我有一个MemoryStream以字节为单位的函数.
当前代码是这样的:
void caller()
{
MemoryStream ms = // not important
func(ms.GetBuffer(), 0, (int)ms.Length);
}
void func(byte[] buffer, int offset, int length)
{
// not important
}
Run Code Online (Sandbox Code Playgroud)
我无法改变,func但我希望尽可能减少从内部更改流数据的可能性func.
我怎么能/应该重写代码以确保流数据不会被更改?
或者这不可能做到?
编辑:
对不起,我没有提到我想不复制数据.
我正在将一个对象序列化为一个byte[]使用MemoryStream:
byte[] serialized = new byte[1000];
using (MemoryStream stream = new MemoryStream(serialized))
using (TextWriter textWriter = new StreamWriter(stream))
serializer.Serialize(textWriter, stuffToSerialize);
Run Code Online (Sandbox Code Playgroud)
有什么方法可以'serialized'根据大小来设定增长stuffToSerialize?
提供有关此主题的背景信息。我正在尝试通过使用内存流将图像文件转换为 byte[] 以返回 memorystream.ToArray(); 但是,我注意到转换 inputBitmap -> byte[] -> outputBitmap 后图像质量下降。outputBitmap 的质量低于 inputBitmap。我将图像转换为 byte[] 的代码如下
MemoryStream mstream = new MemoryStream();
myImage.Save(mstream,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] buffer = mstream.ToArray();
Run Code Online (Sandbox Code Playgroud)
并将字节 [] 转换回图像,
MemoryStream mstream = new MemoryStream(buffer);
Image newImage = Image.FromStream(mstream);
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样,并希望指导我纠正这个问题吗?请注意,在我使用 inputBitmap 作为我的 pictureBox.Image 之前,它的质量看起来很棒。但是从 byte[] 转换为 outputBitmap 后,将 outputBitmap 设置为我的 pictureBox.Image 变得有点模糊和质量低下。
如果数据很大且进程是32位,那么当使用.Net MemoryStream时,我遇到内存不足异常的问题.
我相信System.IO.Packaging API在数据量增加时从内存静默切换到文件支持的存储,从表面上看,似乎可以实现完全相同的MemoryStream的子类事情.
有谁知道这样的实现?我很确定框架本身没有任何东西.
没有找到解决以下问题的方法.
我有一个工作代码用于在文件中保存/加载TreeView但我想将它保存到Properties.Settings.Default.
不幸的是,我在这行中收到错误"没有对象的地图":
object obj = bf.Deserialize(ms);
Run Code Online (Sandbox Code Playgroud)
这是(反)序列化的完整代码:
不知道如何解决这个问题.:(
public static void SaveTreeView(TreeView tree)
{
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, tree.Nodes.Cast<TreeNode>().ToList());
ms.Position = 0;
var sr = new StreamReader(ms);
Properties.Settings.Default.tree = sr.ReadToEnd();
Properties.Settings.Default.Save();
}
}
public static void LoadTreeView(TreeView tree)
{
using (MemoryStream ms = new MemoryStream())
{
var sw = new StreamWriter(ms);
sw.WriteLine(Properties.Settings.Default.tree);
sw.Flush();
ms.Seek(0, SeekOrigin.Begin);
BinaryFormatter bf = new BinaryFormatter();
object obj = bf.Deserialize(ms);
TreeNode[] nodeList = (obj as IEnumerable<TreeNode>).ToArray(); …Run Code Online (Sandbox Code Playgroud) 我试图从另一个图像“复制”一个图像,减少它的高度和宽度,并将其作为流返回以在另一个类中检索并显示为一个图像。但是当我在另一个类中获取流时,抛出异常;“无法访问关闭的流”。
此方法获取图像路径,减小其大小并作为流返回。
public Stream getImagenCopia (string dataImagen)
{
Bitmap ImageOrig = BitmapFactory.DecodeFile (dataImagen);
var ImagenCopia = Bitmap.CreateScaledBitmap (ImageOrig, 80, 80, false);
using (MemoryStream ms = new MemoryStream ())
{
ImagenCopia.Compress (Bitmap.CompressFormat.Jpeg, 40, ms);
return ms;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法接收流并将其设置在 Image 源中
var cim = auxFotos.getImagenCopia(path);
setImagen(img, cim);
void setImagen (Image img, Stream strm)
{
img.Source = ImageSource.FromStream (() =>
{
return strm;
});
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 asp.net 网络表单。
我需要处理 Azure 存储中的 pdf。我正在使用 PDFJet 库来做到这一点。
我想在不下载的情况下流式传输 pdf,因为我必须处理大量的 pdf。
我正在使用以下函数从 Azure 流式传输 pdf:
public MemoryStream DownloadToMemoryStream(DTO.BlobUpload b)
{
CloudStorageAccount storageAccount = Conn.SNString(b.OrgID);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(b.Container);
CloudBlockBlob blob = container.GetBlockBlobReference(b.FileName);
var sasToken = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
{
Permissions = SharedAccessBlobPermissions.Read,
SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(10),//assuming the blob can be downloaded in 10 miinutes
}, new SharedAccessBlobHeaders()
{
ContentDisposition = "attachment; filename=file-name"
});
using (MemoryStream ms = new MemoryStream())
{
blob.DownloadToStream(ms);
return ms;
}
}
Run Code Online (Sandbox Code Playgroud)
并在 aspx.cs …