2011-04-07 3 views
0

디스크에서 파일을 열 수 있지만 쿼리 문자열을 통해 해당 파일에 매개 변수를 전달할 필요가 있습니다. 이것은 .SWF 파일이므로 올바르게로드하려면 필요한 매개 변수를 전달하고 있습니다.파일 이름에 querystring이있는 FileStream?

내가 그렇게 사용하고 코드입니다 : 내가 파일 열기 오류 받고 있어요

FileStream fs = new FileStream(@"C:\test\file.swf?key=value", FileMode.Open, FileAccess.Read); 

: 때문에의 "경로에 잘못된 문자가"는 "?" 파일 이름에. 파일 이름에 querystring을 사용하여 디스크에서 FileStream 객체로 파일을로드하는 방법이 있습니까?

+0

나는 파일을 얻었을 때 파일을 실행하지 않을 때 파일을 얻었을 때 그 내용을 얻었으므로 매개 변수를 보내는 이유는 무엇입니까? 뭐하고 싶어 ? –

+0

나는 여러 가지 이유로 그렇게하고있다. 그들 모두는 질문의 범위를 벗어난 것이다. 높은 수준에서, 내가로드하는 .SWF (필자의 예제에서 file.swf)는 쉘입니다. 보내시는 매개 변수는 실제로 "Filename = realSwfFile.swf"가되며 올바른 내용으로로드되는 .SWF입니다. 이 유형의 것들을 처리하는 Flash 객체에이 객체를로드하고 있으며 Flash 파일을로드 할 때 FileStream을 기본 객체로 사용합니다. 그것은 내 상사를위한 개념 증명입니다. – Scott

+0

querystring은 http/web 개념입니다 ... 예를 들어 http : //www.some.thing/file.swf? key = value를 요청하면 q는 파일 자체로 전달되지 않지만 내부에서 실행되는 플래시 런타임은 브라우저는 q를 사용하여 파일을 요청했는지 여부를 묻습니다. 어떤 런타임에 파일을로드하는지 알 수는 없지만 q를 설정하는 일종의 메서드가 있어야합니다. –

답변

0

그래서 두 개의 SWF 파일을 웹 서버에 넣고 다음 코드를 사용하여이 문제를 해결했습니다. 정확히 생산 준비가 된 코드는 아니지만 개념을 설명합니다.

private static FileStream GetFileStream() 
{ 
    string url = @"http://www.someurl.com/shell.swf?Filename=actualfile.swf"; 

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 
    WebResponse response = request.GetResponse(); 

    byte[] result = null; 
    int byteCount = Convert.ToInt32(response.ContentLength); 
    using (BinaryReader reader = new BinaryReader(response.GetResponseStream())) 
     result = reader.ReadBytes(byteCount); 

    return new FileStream(result); 
} 
3

나는 당신이하려는 일을 할 수 없다고 생각합니다. 디스크에서 파일을로드 할 때 쿼리 문자열은 개념으로 존재하지 않습니다. SWF 파일에 포함 된 바이트 만 반환합니다.

쿼리 문자열은 실행 수준에서 중요합니다.

관련 문제