标签: memorystream

C#3.0 - 如何从MemoryStream将文件保存到数据库?

我正在尝试将PDF文件保存到SQL Server,我已经有一个生成PDF的方法,但是打开一个显示该文件的窗口.

但是,现在我必须生成PDF,但必须将其保存到图像字段中的数据库中.

我必须从MemoryStream对象中保存这个文件,我准备保存,显示等.

我有这个:

MemoryStream m = PDFHelper.gereratePDF(text, title);
Run Code Online (Sandbox Code Playgroud)

我正在googling aroung,我想我必须将这个MemoryStream转换为FileStream,所以我可以将它保存到DB,但我不知道如何.

谢谢!!

c# memorystream c#-3.0

2
推荐指数
1
解决办法
8311
查看次数

MemoryStream.SetLength(0)和MemoryStream.Capacity = 0不清除已用内存

我有一个流媒体的程序,它创建两个巨大的MemoryStreams,然后在完成后需要将它们归零.问题是,在我调用BOTH MemoryStream.SetLength(0)后,内存似乎没有被回收; 和MemoryStream.Capacity = 0. GC.Collect()似乎解决了这个问题,但我听说这是糟糕的编程习惯,因为它会导致应用程序中的所有线程挂起; 虽然挂起的线程在短时间内不会成为问题,但需要清除内存.但是,如果问题有另一种解决方法,那就太好了.有什么建议?

.net c# garbage-collection memorystream

2
推荐指数
1
解决办法
1518
查看次数

使用MemoryStream通过WebClient Post发送XML

我正在尝试发送我在内存流中创建的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)

c# xml asp.net webclient memorystream

2
推荐指数
2
解决办法
1万
查看次数

安全地访问MemoryStream中的数据

假设我有一个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.

我怎么能/应该重写代码以确保流数据不会被更改?

或者这不可能做到?

编辑:

对不起,我没有提到我想不复制数据.

c# memorystream bytearray

2
推荐指数
1
解决办法
622
查看次数

MemoryStream的byte []缓冲区可以变化吗?

我正在将一个对象序列化为一个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

c# serialization memorystream base-class-library

2
推荐指数
1
解决办法
5084
查看次数

从字节转换后的图像质量降低

提供有关此主题的背景信息。我正在尝试通过使用内存流将图像文件转换为 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 变得有点模糊和质量低下。

c# memorystream image

2
推荐指数
1
解决办法
2599
查看次数

MemoryStream替代大数据量

如果数据很大且进程是32位,那么当使用.Net MemoryStream时,我遇到内存不足异常的问题.

我相信System.IO.Packaging API在数据量增加时从内存静默切换到文件支持的存储,从表面上看,似乎可以实现完全相同的MemoryStream的子类事情.

有谁知道这样的实现?我很确定框架本身没有任何东西.

.net c# memorystream stream

2
推荐指数
1
解决办法
8337
查看次数

通过BinaryFormatter反序列化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)

c# treeview memorystream binaryformatter deserialization

2
推荐指数
1
解决办法
3647
查看次数

无法访问关闭的流异常

我试图从另一个图像“复制”一个图像,减少它的高度和宽度,并将其作为流返回以在另一个类中检索并显示为一个图像。但是当我在另一个类中获取流时,抛出异常;“无法访问关闭的流”。

此方法获取图像路径,减小其大小并作为流返回。

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)

c# memorystream stream xamarin.android xamarin.forms

2
推荐指数
1
解决办法
3071
查看次数

从 Azure 存储流式传输 blob - 无法访问关闭的流

我正在使用 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 …

asp.net webforms memorystream filestream azure-storage

2
推荐指数
1
解决办法
1544
查看次数