Hans Kesting said:
Anton has brought this to us :
hi
asp.net 3.5
The code below gives a "Invalid character in a Base-64 string." on the
this code: "byte[] b = Convert.FromBase64String(content);"
The value I've sent into saveURLToImage has been
http://www.vg.no
using System.Net;
using System.IO;
using System.Text;
private void saveURLToImage(string url)
{
if (!string.IsNullOrEmpty(url))
{
string content = "";
WebRequest webRequest = WebRequest.Create(url);
WebResponse webResponse = webRequest.GetResponse();
StreamReader sr = new
StreamReader(webResponse.GetResponseStream(),
Encoding.GetEncoding("UTF-8"));
content = sr.ReadToEnd();
//save to file
byte[] b = Convert.FromBase64String(content);
MemoryStream ms = new MemoryStream(b);
System.Drawing.Image img =
System.Drawing.Image.FromStream(ms);
img.Save(@"c:\pic.jpg",
System.Drawing.Imaging.ImageFormat.Jpeg);
img.Dispose();
ms.Close();
}
}
any ideas what I do wrong?
If you print out that "content", does it look like a valid base64-encoded
string? Or are you including http headers and such?
By the way, if you are sure that the contents will be a jpeg image, you
can save the byte[] directly instead of going through Image.
Hans Kesting
I'm not including any http headers that I know...
I don't know how a base64-coded string should look like, but the result
generated looks like this, Below I pasted part of the contens (couldn't
paste the entire contens because it is too large) of the content
variable.
content "\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01
Transitional//EN\"\n\"
http://www.w3.org/TR/html4/loose.dtd\">\n\n<html>\n<head>\n<title>VG
Nett - Forsiden</title>\n\n<!-- meta -->\n<meta http-equiv=\"Content-Type\"
content=\"text/html; charset=utf-8\" />\n<meta name=\"description\"
content=\"Norges største nettsted. Oppdateres minutt for minutt
på siste nytt innen sport, innenriks, utenriks, og underholdning.\"
/>\n<meta http-equiv=\"refresh\" content=\"600\" />\n<meta
name=\"verify-v1\" content=\"oMgZtqMwDTFfakZF0gC07RcpEoQ5tDpCEzZQ/w7L04Q=\"
/>\n\n<!-- css -->\n<link rel=\"stylesheet\" type=\"text/css\"
href=\"
http://static.vg.no/css/hovedstyle.css\" />\n<link rel=\"stylesheet\"
type=\"text/css\" href=\"
http://static.vg.no/css/annonser.css\" />\n<link
rel=\"stylesheet\" type=\"text/css\"
href=\"
http://www.vg.no/drfront/hovedfront/css/front-25.css\" />\n<link
-landinger \"
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/reise/artikkel.php?artid=566255\">Les
mer »</a></p>\n<ul>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/reise/artikkel.php?artid=556348\">Togloffer
etter solen </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/reise/artikkel.php?artid=556342\">Ryggsekk
+ tog = pop igjen </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/reise/artikkel.php?artid=556512\">Surfelykke
på Spanias sørspiss </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/reise/artikkel.php?artid=556519\">Spennende
grottesafari i Nordland </a></li>\n</ul>\n</div><div
class=\"helse\">\n<h3><a title=\"Gå til Helse-fronten\"
href=\"
http://go.vg.no/cgi-bin/go.cgi/newsflash/http://www.vg.no/helse\">Helse</a></h3>\n<h4><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...lse/svineinfluensa/artikkel.php?artid=566263\">Astmatiske
barn kan bli nektet å gå på
skolen</a></h4>\n<p>HELSEDIREKTORATET (VG Nett) 20 prosent av norske barn
har en form for astma. I verste fall kan mange...</p>\n<p
class=\"leshele\"><a title=\"Les hele Astmatiske barn kan bli nektet å
gå på skolen\"
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...lse/svineinfluensa/artikkel.php?artid=566263\">Les
mer »</a></p>\n<ul>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/helse/artikkel.php?artid=566240\">For
late til å løpe etter bussen </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...://www.vg.no/helse/artikkel.php?artid=566226\">Kløe
er ikke smerte </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/newsflash/http://e24.no/boers-og-finans/article3209925.ece\">Hydro
låner 1 milliard</a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/newsflash/http://e24.no/utenriks/article3209845.ece\">Dansk
verftsgigant stenger dørene</a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/newsflash/http://e24.no/boers-og-finans/article3209836.ece\">-
Nå er tidspunktet for å kjøpe Rec</a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news.../e24-kommentar/orjasaeter/article3209829.ece\">Sykelønnsordningen
er for god</a></li>\n</ul>\n</div><div class=\"teknologi\">\n<h3><a
title=\"Gå til Teknologi-fronten\"
href=\"
http://go.vg.no/cgi-bin/go.cgi/newsflash/http://www.vg.no/teknologi\">Teknologi</a></h3>\n<h4><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...ww.vg.no/teknologi/artikkel.php?artid=566254\">Spotifys
genistrek er avslørt </a></h4>\n<p>Musikktjenesten ga bort 20 prosent
av aksjene i bytte mot plateselskapenes arkiver. ...</p>\n<p
class=\"leshele\"><a title=\"Les hele Spotifys genistrek er avslørt
\"
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...ww.vg.no/teknologi/artikkel.php?artid=566254\">Les
mer »</a></p>\n<ul>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...ww.vg.no/teknologi/artikkel.php?artid=566222\">HD-krigen
blusser opp på ny </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...//www1.vg.no/spill/artikkel.php?artid=566179\">Spillanmeldelse:
Godkjent slapstick-krig </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...//www1.vg.no/spill/artikkel.php?artid=566180\">Spillanmeldelse:
Suveren svensk slagmark </a></li>\n<li><a
href=\"
http://go.vg.no/cgi-bin/go.cgi/news...ww.vg.no/teknologi/artikkel.php?artid=556387\">Disse
kompaktkameraene tåler sjøsprøyt!
</a></li>\n</ul>\n</div><div class=\"bildespes floatfix\">\n<h3><a
title=\"Se flere bildespesialer\"
href=\"
http://www.vg.no/bildespesial/spesial.php\">Bildespesialer</a></h3>\n<ul>\n<li><a
href=\"
http://www.vg.no/bildespesial/spesial.php?id=7010\"
title=\"Fotballbråk i Molde\"><img
src=\"
http://static.vg.no/bildespesial/7010/1249902997.43219_thumb.jpg\"
alt=\"\" /><span>Fotballbråk i Molde</span></a></li>\n<li><a
href=\"
http://www.vg.no/bildespesial/spesial.php?id=7009\" title=\"Se
stjernene på Teen Choice Awards\"><img
src=\"
http://static.vg.no/bildespesial/7009/1249887457.42657_thumb.jpg\"
alt=\"\" /><span>Se stjernene på Teen Choice Awards</span></a></li>\n<li><a
href=\"
http://www.vg.no/bildespesial/spesial.php?id=7008\" title=\"Disse
kjemper om å bli Miss Universe 09\"><img
src=\"
http://static.vg.no/bildespesial/7008/1249839558.67503_thumb.jpg\"
alt=\"\" /><span>Disse kjemper om å bli Miss Universe
09</span></a></li>\n</ul>\n</div></div> <!-- /newsflash -->\n\n<div
id=\"footer\">\n<ul>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://www.vg.no/nyheter/\">Nyheter</a>
]</li>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://www.vg.no/sport/\">Sport</a>
]</li>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://www.vg.no/sport/fotball\">Fotball</a>
]</li>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://www.vg.no/rampelys/\">Rampelys</a>
]</li>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://lista.vg.no/\">VG-lista</a>
]</li>\n<li>[ <a
href=\"
http://go.vg.no/cgi-bin/go.cgi/r-b3/http://www.vg.no/soek/\">Søk</a>
]</li>\n</ul>\n\n<p>Har du henvendelser om denne tjenesten? Ta kontakt med
vår <script
type=\"text/javascript\">mt('119,101,98,109,97,115,116,101,114,64,118,103,46,110,111',
'vakthavende journalist')</script>.</p>\n<p>Ansvarlig redaktør:
<script type=\"text/javascript\">mt('69, 115, 112, 101, 110, 46, 69, 103,
105, 108, 46, 72, 97, 110, 115, 101, 110, 64, 118, 103, 46, 110, 111',
'Espen Egil Hansen');</script>\n / Administrerende direktør: <script
type=\"text/javascript\">mt('106,111,46,99,104,114,105,115,116,105,97,110,46,111,116,101,114,104,97,108,115,64,118,103,46,110,111',
'Jo Christian Oterhals');</script></p>\n<p>Sentralbord VG: 22 00 00
00</p>\n<p class=\"tips\"><strong>TIPS OSS! </strong> SMS til
<strong>2200</strong> · MMS m/bilde til <strong>2200</strong>
· Ring <strong>22 00 00 00</strong> · E-post til <script
type=\"text/javascript\">mt('50,50,48,48,64,118,103,46,110,111',
'tusentipset')</script> </p>\n<p><em>VG Nett har ikke ansvar for innhold
på eksterne nettsider som det lenkes til.</em></p>\n<p>Kopiering av
materiale fra VG Nett for bruk annet sted er ikke tillatt uten avtale | <a
href=\"
http://www.vg.no/copyright.hbs\">© 2009 Verdens Gang
AS</a></p>\n</div> <!-- /footer -->\n</div> <!-- /right_column -->\n\n<div
id=\"extra\">\n<div class=\"rightad\">\n<script language=\"javascript\"
type=\"text/javascript\">\nOAS_AD('x09');\n</script>\n</div> <!--
/rightad -->\n\n<div class=\"rightad\">\n<script language=\"javascript\"
type=\"text/javascript\">\nOAS_AD('x07');\n</script>\n</div> <!--
/rightad -->\n\n\n</div> <!-- /extra -->\n</div> <!--
/wrapper -->\n\n<script type=\"text/javascript\">\nvar seksjon =
\"Front\";\ngetTMqs('http', '
www.vg.no/'+seksjon, '', 'vg_no', 'no',
'ISO-8859-15');\n</script>\n\n<noscript><img
src=\"
http://statistik-gallup.net/V11*www.vg.no/Front**vg_no/no/ISO-8859-15//\"
alt=\"\" /></noscript>\n\n<script type=\"text/javascript\">\n// set the
active tab in \"siste nytt\"\nvar sisteNytt_activeTab =
'sistenytt_alle';\n\n// function to swap tabs\nfunction swapSisteNyttTab(to)
{\n if (sisteNytt_activeTab == to) {\n return false;\n }\n\n
jQuery(\"#\" + sisteNytt_activeTab + \", #\" +
to).toggleClass(\"hidden\");\n sisteNytt_activeTab = to;\n\n return
false;\n}\n\n// add the hidden class to some of the \"sistenytt\" boxes and
attach events to the tabs\njQuery(\"#sistenytt_nyheter, #sistenytt_sport,
#sistenytt_rampelys\").toggleClass(\"hidden\");\n\njQuery(\"#sisteNyttAlleTab\").click(function
() { return
swapSisteNyttTab('sistenytt_alle'); });\njQuery(\"#sisteNyttNyheterTab\").click(function
() { return
swapSisteNyttTab('sistenytt_nyheter'); });\njQuery(\"#sisteNyttSportTab\").click(function
() { return
swapSisteNyttTab('sistenytt_sport'); });\njQuery(\"#sisteNyttRampelysTab\").click(function
() { return
swapSisteNyttTab('sistenytt_rampelys'); });\n\njQuery(\"#vghovedmeny
..menuSection\").click(function() {\n var listElem =
jQuery(this).next('ol');\n\n if (listElem.css('display') == 'none') {\n
listElem.css('display', 'block');\n } else {\n
listElem.css('display', 'none');\n }\n\n
jQuery(this).children('a').toggleClass('aktiv');\n\n return
false;\n});\n\n// Toggle the arrow in the active section in the
menu\njQuery('#vghovedmeny
ol.aktiv').prev().children('a').toggleClass('aktiv');\n\n// Show first
element straight away and mark it as the active
entry\njQuery('#vgHurraEntries
li:first').show().toggleClass('activeEntry');\n\nsetInterval(function() {\n
// Fetch current and next\n var currentEntry = jQuery(\"#vgHurraEntries
li.activeEntry\");\n var nextEntry = currentEntry.next();\n\n // No
more elements? Start at the first\n if (!nextEntry.length) {\n
nextEntry = jQuery(\"#vgHurraEntries li:first\");\n }\n\n
currentEntry.fadeOut('slow').toggleClass('activeEntry');\n
nextEntry.fadeIn('slow').toggleClass('activeEntry');\n},
5000);\n</script>\n<script type=\"text/javascript\">\n<!--\nxtnv = document;
//parent.document or top.document or document \nxtsd =
\"
http://logi163\";\nxtsite = \"417915\";\nxtn2 = \"1\"; // level 2
site \nxtpage = \"Front\"; //page name (with the use of :: to create
chapters)\nxtdi = \"\"; //implication
degree\n//-->\n</script>\n<script type=\"text/javascript\"
src=\"
http://static.vg.no/xiti/xtcore_vgnett.js\"></script>\n<noscript>\n<img
width=\"1\" height=\"1\" alt=\"\"
src=\"
http://logi163.xiti.com/hit.xiti?s=417915&s2=1&p=Front&di=&\"