İstekleri alan, Oracle Veritabanından veri toplayan ve bilgileri JSON üzerinden geri gönderen bir ASP.NET web hizmeti yazdım. Veriler Base64'te döndürülmesi gereken bir görüntü dosyası (jpg) içerir.C# ile JSON kullanarak temel Base64 verilerini alma
Görüntüyü döndürmeye çalışana kadar her şey iyi gidiyordu.
Oracle saklı yordam aşağıdaki gibidir: Benim kod olmasıdır Ben içinden takip ettik ve öngörülebilir verileri (base64 dize)
döndü görüyorum,create or replace PROCEDURE check_data(
<in parameters here>,
outpixblob OUT BLOB);
fileptr := utl_file.fopen('PIX_DIR', vFilename, 'rb', 32760);
utl_file.get_raw(fileptr, outpixblob);
Bu iyi iş gibi görünüyor (aktarılan)
Şimdi, C# kodu:
conn.Open();
var cmd = new OracleCommand
{
Connection = conn,
CommandText = "CHECK_DATA",
CommandType = CommandType.StoredProcedure,
};
//lots of parameter settings here, just showing the pertinent one
//cmd.Parameters.Add("outpixblob", OracleDbType.Blob).Direction = ParameterDirection.Output;
var dr = cmd.ExecuteNonQuery();
var blob = (OracleBlob) cmd.Parameters["outpixblob"].Value;
var buffer = new byte[blob.Length];
blob.BeginChunkWrite();
blob.Write(buffer, 0, (int)blob.Length);
blob.EndChunkWrite();
string photoString = System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length);
result = new VisitorCheckResult
{
...
Photo = photoString,
};
Açıkçası yine temel olmayan kodunu kesip, ama ben ne yapıyorum düşüncesi olduğuna inanıyoruz.
Photocring'in sonucu, Oracle sproc hata ayıkladığında gördüğüm değerler değil; bunun yerine, tekrar tekrar '\ u0000' uzun bir dizedir.
Eminim ki eksik bir şey var, ama bunun n00b olması ne olduğunu göremiyorum.
Yardım!
Bu photoString '64F'ye değil, UTF8'e kodlanan görüntüdür. –
Bunun yerine hangi kodlamayı kullanmalıyım? – Fletchius
System.Convert.FromBase64String() veya System.Convert.FromBase64CharArray() yöntemini denediniz mi? – JYA