현재 프로그램에서 사용중인 원격 서버로 이미지를 보내려고합니다. 내가 해낸 일은 이미지를 먼저 사용자의 워크 스테이션에 저장 한 다음 그 위치를 저장하고 내 방법으로 전달하여 내 서버에 전달하는 것입니다.파일 형식이 지원되지 않습니다.
그러나 코드를 실행하여 이미지를 전달할 때 내 파일 유형이 지원되지 않는다는 오류가 발생합니다.
public static void HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)
{
Console.Write(string.Format("Uploading {0} to {1}", file, url));
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "POST";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
Stream rs = wr.GetRequestStream();
string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in nvc.Keys)
{
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
}
rs.Write(boundarybytes, 0, boundarybytes.Length);
string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n";
string header = string.Format(headerTemplate, paramName, file, contentType);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
rs.Write(headerbytes, 0, headerbytes.Length);
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
rs.Write(buffer, 0, bytesRead);
}
fileStream.Close();
byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
rs.Write(trailer, 0, trailer.Length);
rs.Close();
WebResponse wresp = null;
try
{
wresp = wr.GetResponse();
Stream stream2 = wresp.GetResponseStream();
StreamReader reader2 = new StreamReader(stream2);
Console.Write(string.Format("File uploaded, server response is: {0}", reader2.ReadToEnd()));
}
catch (Exception ex)
{
Console.Write("Error uploading file", ex);
if (wresp != null)
{
wresp.Close();
wresp = null;
}
}
finally
{
wr = null;
}
}
나는 그렇게 같은 방법 전화 해요 : : 여기
내 코드의 아래 실행 위의 방법 SFD에서NameValueCollection nvc = new NameValueCollection();
nvc.Add("id", "TTR");
nvc.Add("btn-submit-photo", "Upload");
HttpUploadFile("http://WebSiteLocation.com/images/uploadimage.html", sfd.ToString(),"image", "image/jpeg", nvc);
를 내가하는 데 사용하는 저장 파일 대화 상자에 관련 이미지를 저장하십시오. 오류는 다음과 같습니다.
주어진 경로의 형식은 지원되지 않습니다. 이 라인에서 강조
는 :
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
나는 위의 코드 내가 이런 일이 혼란 스러워요 이유에 따라 어떤 파일을 보내 괜찮을 것이라고 생각했다.
누구나 그 이유를 볼 수 있습니까? 나는 이걸 보면서 잠시 동안 보냈고 나는 눈과 두뇌의 새로운 쌍이 필요하다고 생각한다. 완료를 위해서
내가 sfc.ToString()
를 호출 할 때 내가 돌아올 문자열이 있습니다 :
System.Windows.Forms.SaveFileDialog : 제목 : 파일 이름 : C : \ 사용자 \ 내 컴퓨터 바탕 화면 \ IMG \. png
좋은 점. 그것을 변경하고 나는 여전히 동일한 문제와 오류를 가지고 있습니다. 파일은 짝이 될 수 있습니다. 텍스트, 이미지 등 – N0xus
응용 프로그램을 실행하는 사용자는 누구입니까? 권한 문제인지 궁금해? –
그것은 Windows 7 컴퓨터에서 winform 응용 프로그램이고 내 계정에 대한 전체 관리자 권한을가집니다. – N0xus