2013-04-27 4 views
0

오픈 소스 API가 요청을 처리 할 수 ​​있도록 ASP.NET에서 Base64로 이미지 URL을 인코딩하려고합니다. 오픈 소스 말단의 지원팀은 PHP 시스템에서이 코드를 보냈습니다. 그 문제를 C#으로 변환하는 데 문제가 있습니다.URL 인코딩 된 Base64 인코딩 된 파일 데이터

PHP 코드 :

지금까지 시도
$data = urlencode(base64_encode(fread(fopen("/tmp/signature.jpg", "r"),  filesize("/tmp/signature.jpg")))); 

것들 :

어떤 도움을 주시면 감사하겠습니다
string data = "http://url.com/image.jpg" 
byte[] encbuff = HttpUtility.UrlEncodeToBytes(data); 
string enc = Convert.ToBase64String(encbuff); 
string urlenc = HttpUtility.UrlEncode(data); 

, 감사합니다.

답변

1

PHP fopenfread 함수는 파일을 열고 바이트를 읽는 중입니다. URL로만 작업하고 있습니다. 다운로드하거나 로컬 파일 인 경우 먼저 열어야합니다.

byte[] data; 
using (var webClient = new WebClient()) 
    data = webClient.DownloadData("http://url.com/image.jpg"); 
string enc = Convert.ToBase64String(data); 
string urlenc = HttpUtility.UrlEncode(enc); 
+0

MapServerPath + [File.ReadAllBytes] (http://msdn.microsoft.com/en-us/library/system.io. file.readallbytes.aspx)는'fopen' /'fread'에서 더 많은 인라인으로 나타날 것입니다. 그리고 어딘가에 길이를 사용해야합니다. –

+0

질문은 데이터가 "http://url.com/image.jpg"일 것이라고 말했기 때문에 이미지가 저장된 곳이 아닌 다른 컴퓨터에서이 데이터가 실행될 것이라고 가정했습니다. 이것이 올바르지 않으면'ReadAllBytes'가 그것을 읽는 좋은 방법입니다. C# 코드에서는 여기에서 수행하는 작업을 수행하기 위해 파일 길이를 지정할 필요가 없습니다. PHP로 작동하더라도, 여기서는 어디서나 사용할 필요가 없습니다. –

+0

+1. 너 맞아 - 나는 괄호를 세지 않았다 ... - 길이는 필요 없다. –