我有一个asp.net webform项目,我从使用iTextSharp保存在数据库中的数据生成pdf文档。一切工作完美,除了当我需要生成我的图像,保存在一个列表字符串。我放了一个断点,我正在读取数据,但每次它都会在部分Image.GetInstance(item)中抛出错误。如果我把它留在那样,它会抛出一个错误System.IO.PathTooLongException: '指定的路径,文件名,或两者都太长了。完全限定文件名必须小于260个字符,目录名必须小于248个字符。我也尝试将项目转换为字符串,但它说找不到路径。我甚至试图将整个列表转换为列表字节,但我提出了相同的错误。数据库中的My List字符串格式如下:
ImgList:("904 u3jg8orut390jgg","09年re8im09mj3895gh","509 tgj390h359"]。
我试着用谷歌搜索每一个错误,但我找不到解决办法。我甚至尝试在Windows中启用长路径,但它对我不起作用。如果有人能帮助我,我会非常感激。这是我的代码。
编辑
:我认为问题在于拆分和替换字符。当我将字符串添加到列表中时,我得到了一个额外的引号和反斜杠,像这样包装成""…"。我试过修剪,换掉那些字,但都没有成功。我试图用imgList = imgList.Select(s => s.Replace("\b"", string.Empty)).ToList();
改变imgList = imgList.Select(s => s.Replace(""", string.Empty)).ToList();
,但它不起作用。任何帮助吗?
//getting data from database
string strList = dt.Rows[0]["imgList"].ToString();
List<string> imgList = new List<string>(strList.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
imgList = imgList.Select(s => s.Replace(""", string.Empty)).ToList();
imgList = imgList.Select(s => s.Replace("[", string.Empty)).ToList();
imgList = imgList.Select(s => s.Replace("]", string.Empty)).ToList();
//assign the value
pdf.ImageList = imgList;
//using iTextSharp
foreach (var item in pdf.ImageList)
{
if (item.Count() >= 1)
{
Image image = Image.GetInstance(item);
}
}
在你提到的评论中:
这些图片被上传,HttpPostedFile在字节[]从二进制阅读器和转换成字节[]base64string
所以这些图像是base64编码的…因此,您必须再次对数据库内容进行base64解码以获得图像字节数组。然后你可以将这些图像字节数组输入Image.GetInstance
。