asp.net POST 데이터 흐름 에서 인자 와 파일 추출
어 쩔 수 없 이 다음 하책 이 떠 올 랐 다.그것 은 바로 받 아들 인 입력 흐름 을 분석 하여 원 하 는 데 이 터 를 추출 하 는 것 이다.예 를 들 어 내 가 앞에서 언급 한 데이터(두 개의 매개 변수,하나의 그림 파일)
실현 사고:입력 흐름 을 읽 고 비 파일 부분의 분석 을 통 해 전체 흐름 에서 파일 의 위치 와 크기 를 확인 한 다음 에 입력 흐름 을 다시 읽 어서 파일 을 얻 을 수 있 습 니 다.
위의 POST 데이터,매개 변수 부분 과 구분자 등 을 보면 모두 문자열 입 니 다.기본적으로 모두 영문 숫자 기호 등 이다.만약 에 중국어 로 보 내기 전에 인 코딩 을 할 수 있다 면 기본적으로 인 코딩 문제 로 인해 계산 실 수 를 하지 않도록 확보 할 수 있다(영문 문자 의 각 인 코딩 은 모두 같다).이 부분의 내용(파일 이 아 닌 부분,파일 부분 은 바 이 너 리 형식 으로 되 어 있 으 니 절대 이렇게 하지 마 세 요)을 얻 을 수 있 습 니 다.입력 한 흐름 을 받 아들 여 문자열 로 변환 합 니 다.매개 변수 에 중국어 가 있 으 면 클 라 이언 트 POST 에서 어떤 인 코딩 을 사용 하 는 지 주의 하 십시오.
byte[] input = Request.BinaryRead(Request.TotalBytes);
string source = Encoding.UTF8.GetString(input);
그리고 정규 표현 식 을 통 해 위의 비 파일 부분 과 일치 하 는 내용 을 생략 하고 얻 은 내용 을 by te[]로 전환 하여 길 이 를 계산 하 십시오.매개 변수의 값 은 여기에서 얻 을 수 있 습 니 다.
Regex rginput = new Regex(" ");
if (rginput.IsMatch(source))
{
int headLength=Encoding.UTF8.GetBytes(rginput.Match(source).Value)
}
동 리 는'-----------7da 119 c1004a 6-'의 길 이 를 계산한다.환 행 회수부 가 있 으 니 주의 하 세 요.이렇게 하면 파일 이외 의 부분 이 전체 흐름 에서 의 크기 를 확정 할 수 있 습 니 다.즉,파일 이 전체 흐름 에서 의 위치 와 크기 도 확정 되 었 습 니 다.그러면 원본 흐름 을 다시 읽 으 면 파일 부분 을 얻 을 수 있 습 니 다.파일 이 텍스트 형식 이 라면 이렇게 하지 않 고 매개 변수 부분 처럼 분석 하여 가 져 올 수 있 습 니 다.
//
FileStream fss = new FileStream("path", FileMode.Create);
fss.Write(input, headLength, input.Length-headLength-footLength);
fss.Close();
코드
//
byte[] imgcont = new byte[input.Length - headLength-footLength];
MemoryStream ms = new MemoryStream(input);
//
ms.Seek(headLength,SeekOrigin.Begin);
ms.Read(imgcont, 0, imgcont.Length);
ms.Close();
주:이 방법 은 어느 정도 위험 이 있다.바로 파일 의 크기 와 위치 에 대한 확정 이다.반드시 정확하게 계산 하고 입력 흐름 에 대한 분석 은 주도면밀 하고 전면적 이 어야 한다.그리고 파일 을 여러 개 로 올 릴 때 이 방법 은 귀 찮 습 니 다.더 좋 은 방법 이 있다 면 메 시 지 를 남 겨 서 교류 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.