2016-11-15 1 views
0
protected void ExportToImage(object sender, EventArgs e) 
    { 
     string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1]; 
     byte[] bytes = Convert.FromBase64String(base64); 
     File.Copy(bytes.ToString()+".jpg", "\\\\192.168.2.9\\Web"); 
    } 

hfImageData 데이터를 base64로 변환합니다. 그러면 base64에서 jpg 이미지 파일을 서버로 변환하고 DB에 저장하는 C# 함수를 호출합니다.C#을 사용자가 도면을 한 후, 나는 64 기수로</strong><strong>convas 변환합니다, JPG 이미지에 내가 JQuery와에서 얻을

언제 내가 onclick 버튼을 메 시지 : System.IO.FileNotFoundException : 'System.Byte []. jpg'파일을 찾을 수 없습니다.

이유가 무엇입니까?

답변

0

이 줄의 File.Copy(bytes.ToString()+".jpg", "\\\\192.168.2.9\\Web");에서 바이트 배열의 내용을 효과적으로 변환하려고하고 이미지 이름으로 사용하려고하지만 실제로 파일을 만들지는 않습니다.

bytes.ToString()은 단순히 콘텐츠가 아닌 개체의 유형을 반환합니다.

protected void ExportToImage(object sender, EventArgs e) 
{ 
    string base64 = Request.Form[hfImageData.UniqueID].Split(',')[1]; 
    byte[] bytes = Convert.FromBase64String(base64); 
    //write the bytes to file: 
    File.WriteAllBytes(@"c:\temp\somefile.jpg", bytes); //write to a temp location. 
    File.Copy(@"c:\temp\somefile.jpg", @"\\192.168.2.9\Web");//here we grab the file and copy it. 
    //EDIT: based on permissions you might be able to write directly to the share instead of a temp folder first. 
} 
+0

이 오류가 발생합니다. 파일 이름, 디렉토리 이름 또는 볼륨 레이블 구문이 잘못되었습니다. – KyLim

+0

답변을 업데이트 했으므로 @ -symbol을 사용하여 전체 문자열을 이스케이프 처리하려고 시도 할 수 있습니다. – JanR

2

bytes.ToString() 아무런 의미가 없습니다.

바이트가 파일이 아닙니다. 복사 할 수 없습니다.

대신 새 파일에 직접 쓰기 위해 File.WriteAllBytes()을 호출하십시오.

+0

이 의미 : 당신이 System.Byte[].jpg

문제가 당신의 기능을 변경하는 것입니다 해결하는 방법을보고있는 이유? File.Copy (File.WriteAllBytes (bytes) + ".jpg", "\\\\ 192.168.2.5 \\ Web"); – KyLim

관련 문제