2011-05-06 2 views
0

접근 한가장 효율적인 방법 (두 가지 방법)

이 방법은 일반적인 하나입니다. 텍스트 과 이미지가 포함 된 일부 데이터를 삽입하는 경우 저장 버튼 (텍스트 저장)을 클릭하기 전에 이미지를 업로드하십시오. .ASPX에

static int i; 
static HttpPostedFile[] fp; 

:

<ASP:FILEUPLOAD id="btnBrowse" runat="server" /> 
<br /> 
<ASP:BUTTON id="btnUpload" runat="server" onclick="addfile_Click"/> 
<br /> 
<ASP:BUTTON id="btnSave" runat="server" onclick="save_Click" /> 

btnUpload 어레이에 다음 이미지를 추가 할 것이다 :

접근법 2

HttpPostedFile 유형의 배열을 만들어

protected void addfile_Click(object sender, EventArgs e) 
{ 
    if (btnBrowse.HasFile) 
    { 
     fp[i] = btnBrowse.PostedFile; 
     i++; 
    } 
} 

btnSave배열에 이미지를 삽입합니다 : 그것은 잘 작동

protected void Save_Click(object sender, EventArgs e) 
{ 
    for (int j = 0; j <= i; j++) 
    { 
     string filename = Path.GetFileName(fp[j].FileName); 

     var image = SD.Image.FromStream(fp[j].InputStream); 

     image.Save(Server.MapPath("~/images/Profiles_Images/") + filename); 
    } 
} 

. 두 가지 질문이 있습니다.

  1. 두 번째 방법은 첫 번째 방법보다 효율적입니까?
  2. 그렇다면 정적을 사용하지 않고 배열에 파일을 저장하는 방법 (정적이 아닌 값을 저장하지 않음)? 왜냐하면 정적은 당신이 알고있는 것처럼 효율적이지 않기 때문입니다.
+0

@HTB : 정적이지 않은 것에 대한 귀하의 일반적인 진술은 잘못된 것으로 알고 있습니다. 정적 인 것을 만드는 것이 정적이 아닌 것보다 효율적이지 못하다고 제안 할 수있는 것은 아무것도 없습니다. 모든 리소스에 대해 얼마나 많은 경합이 발생하는지에 관한 것입니다. – casperOne

+0

나는 static을 사용하는 것이 프로그래머들 사이에 일반적인 오류라고 제안하는 많은 기사를 읽었습니다! – Roobah

+0

@HTB : 그렇지 않습니다. * 사용 방법 *은 오류입니다. 그저'정적 인 '것은 그 자체를 나쁜 것으로 만들지 않습니다. – casperOne

답변

0

두 가지 옵션은 파일을 게시 한 다음 다른 파일을 게시하는 것보다 한 번에 모든 파일을 업로드하므로 좀 더 효율적일 수 있습니다. 서버에 대해 동일한 시간이 소요되지만 사용자 환경에서는 지루할 것입니다.

그러나, 진짜 좋은 사용자 경험뿐만 아니라 한 번에 여러 파일을 업로드 할 수있는 기능을 위해, uploadify 사용 http://www.uploadify.com/

+0

두 번째 이유는 두 가지입니다. 1) 사용자가 코멘트를 쓸 수 있도록 하나씩 업로드해야합니다. 2) 사용자가 저장 버튼을 클릭 할 때까지 이미지가 저장되지 않습니다 (이것은 다른 입력과 이미지를 함께 저장하여 compelete 레코드를 만듭니다) – Roobah

0

그것은 당신을 위해 무엇을 "효율적"마르스 불분명하다. 사용자 (유용성)에 대해, 또는 서버 (성능)에 대해 가장 빠르거나 가장 최적 인 것이 정확성 ("정적이 효율적이지 않음"에서 사용한 방식처럼 보임)에 관심이 있습니까? ..

여러 사용자를 지원하려면 정적 사용이 작동하지 않습니다. 정적은 서버 측 응용 프로그램에서 합리적으로 합리적이며 서버 코드에 대한 사용자 데이터를 안전하게 보관할 수 없습니다.

파일을 하나씩 저장하려면 프로세스 재시작으로 인해 요청간에 메모리에 저장된 파일이 손실 될 수 있으므로 SQL 세션 상태 또는 다른 영구 저장 장치 사용을 고려하십시오.

+0

예. 그것은 여러 사용자를위한 것입니다. 정적 대신에 내가 무엇을 사용할 수 있습니까? – Roobah

+0

제가 말했듯이 - 세션 상태 (프로세스 재시작에 신경 쓰면 SQL 버전)를 고려하십시오. 또한 게시하기 전에 필요한 모든 데이터를 입력 할 수있는 알맞은 UI를 제공하는 한 여러 파일을 한 번에 업로드하는 것이 특히 바람직하지 않습니다. –

관련 문제