2009-11-30 2 views
0

파일의 이진 내용을 사용하는 데 문제가 있습니다. 파일의 웹 메서드 콘텐츠를 전달하고 싶습니다. 나는 자바 스크립트 함수 getAsBinary()를 통해 내 페이지의 fileupload 컨트롤에서 가져온다. 하지만 이미지 클래스의 예제를 만들려고 할 때 웹 메서드에 오류가 나타납니다. 그래서 fileupload 컨트롤과 scriptmanager가있는 페이지 (.aspx)가 있습니다. 세 가지가 있습니다 자바 스크립트 함수 :fileupload 컨트롤에서 이미지 파일의 내용을 javascript를 통해 웹 메서드에 전달하는 방법은 무엇입니까?

// Get image from fileupload control and pass it in webmethod 
function Get_image() { 
    var file_uploader = document.getElementById(file_uploader_name); 
    var file_content = file_uploader.files[0].getAsBinary(); 
    imupcon.Get_image(file_content, OnRequestComplete, OnError); 
} 
// Successful execution 
function OnRequestComplete(result) {alert(result);} 
//Error execution 
function OnError() { alert("Error!");} 

내가 웹 방법으로 웹 서비스가 있습니다

[WebMethod] 
public string Get_image(string file_content, string file_name) 
{ 
byte[] data = Encoding.Unicode.GetBytes(file_content); 
MemoryStream memStream = new MemoryStream(); 
memStream.Write(data, 0, data.Length); 

//Error appears here 
System.Drawing.Image image = System.Drawing.Image.FromStream(memStream); 

memStream.Close(); 
return "Hurray!"; 
} 

는 어떤 이유가 무엇인지 생각이 있습니까를? 파일의 내용을 웹 메서드에 전달하는 방법은 무엇입니까? 감사.

+0

나는 보안 목적으로 자바 스크립트를 통해 파일을 업로드 할 수 없다고 확신합니다 ... – Jason

+0

Jason, 할 수 있습니다. –

+0

오류의 내용은 무엇입니까? – Gregoire

답변

1

이미 이진 형식 인 경우 Encoding.Unicode.GetBytes이 필요하지 않습니다. files[0].getAsText("utf-8")을 호출하면 데이터가 유니 코드로 저장됩니다. 이러한 모든 방법은 are now obsolete이며 기능 감지 기능을 사용해야하며 가능한 경우 standard FileReader API을 사용해야합니다.

+0

니스. 그렇다면 OP가 대신 무엇을 할 것입니까? 'r = 새로운 FileReader(); r.onloadend = /*...*/; r.readAsBinaryString (file_uploader.files [0] .name)'? –

+0

하지만 js 함수가 전달하는 파일 내용을 사용하여 클래스 Image의 예제를 만드는 것이 실제로 무엇입니까? – greatromul

+0

나는 당신의 질문을 거의 이해하지 못했고 당신은 나에게 많은 정보를주지 않았다. 그래서 나는 당신이 마주 치고있는 문제를 일으키는 원인이 무엇인지 지적했다. –