如何解决服务器上的“找不到路径的一部分..”的问题

时间:2019-10-24 06:02:29

标签: c# asp.net zxing memorystream

我正在使用Zxing库创建条形码和内存流,以将其保存到服务器文件夹中。 在本地服务器和测试服务器上一切正常,但是当我在客户端服务器上发布代码时,它既不会创建条形码图像,也不会在该服务器位置获取图像位置。 这是我为此过程创建的代码-

            var writer = new BarcodeWriter();
            writer.Format = BarcodeFormat.CODE_128;// QR_CODE;
            var result = writer.Write(printArray[0]);
            string path = Server.MapPath("/images/code/" + ComplaintId + ".jpg");    
            var barcodeBitmap = new Bitmap(result);
            using (MemoryStream memory = new MemoryStream())
            {
                using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
                {    
                    barcodeBitmap.Save(memory, ImageFormat.Jpeg);
                    byte[] bytes = memory.ToArray();
                    fs.Write(bytes, 0, bytes.Length);
                }
            }    

此代码用于将条形码保存在服务器位置。

 string ImagePath = ComplaintId + ".jpg";
 imgQRcode.Src = "~/images/code/" + ImagePath;

并使用此行将其绑定到img标签。

它显示类似错误

  

找不到路径g:\ xyz \ images \ code \ 103.jpg的一部分

这只会在客户端服务器上发生,而不会在其他地方发生。

  • ---------编辑1 --------

由于在主机服务器上创建映像时仍然遇到问题,因此我现在对代码进行了一些更改。与其保存条形码图像,不如将其转换为Base64字符串并使用它。

这里是代码更改

            var barWriter = new BarcodeWriter();
            barWriter.Format = BarcodeFormat.CODE_128;// QR_CODE;
            var barResult = barWriter.Write("printbar");                
            var barcodeBitmap = new Bitmap(barResult);
            string bs64 = ToBase64String(barcodeBitmap, ImageFormat.Jpeg);

和Tobase64String函数

public static string ToBase64String(Bitmap bmp, ImageFormat imageFormat)
    {
        string base64String = string.Empty;        
        MemoryStream memoryStream = new MemoryStream();
        bmp.Save(memoryStream, imageFormat);        
        memoryStream.Position = 0;
        byte[] byteBuffer = memoryStream.ToArray();
        memoryStream.Close();
        base64String = Convert.ToBase64String(byteBuffer);
        byteBuffer = null;
        return base64String;
    }

并具有将base64绑定到图像的功能

 public static string GetImageSrc(string base64Src)
    {
        return "data:image/png;base64," + base64Src;
    }

使用

将其提供给iTextcharp
byte[] imageBytes = Convert.FromBase64String(bs64);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(imageBytes);

0 个答案:

没有答案