2014-04-17 1 views
0

webclient로 파일을 업로드했습니다. 그러나 업로드 성공 및 응답 링크 파일. 하지만 파일 관리자로 가면 내 계정에 파일이 없습니다. 왜 ?webclient의 파일 업로드

이것은 내 코드입니다. 창 측에서

private void btnUpload_Click(object sender, EventArgs e) 
    { 
     WebClient wc = new WebClient(); 
     wc.Headers.Add("OurSecurityHeader", "encryptedvalue"); 
     wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");  
     wc.Headers.Add(HttpRequestHeader.Cookie, "__cfduid=d56b9e4ca0801822e9231936c70518ec91397746478931; __utma=259844498.1111893290.1397796877.1397796877.1397802609.2; __utmc=259844498; __utmz=259844498.1397796877.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); login=KimJanParkC1; xfss=g7prlsjg15zl57h4; __zlcid=%7B%22mID%22%3A%22OPdgp3o75YUWIg%22%2C%22sid%22%3A%22140417.91047.473AFH5T%22%7D; __utmb=259844498.17.10.1397802609; sthumb=500x500; _mcnc=1");  
     wc.UploadProgressChanged += new UploadProgressChangedEventHandler(wc_UploadProgressChanged); 
     wc.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCallback); 
     wc.UploadFileAsync(new Uri("http://img102.imagetwist.com/cgi-bin/upload.cgi?upload_id="), "POST", txtPath.Text); 
    } 

    void wc_UploadFileCompleted(object sender, UploadFileCompletedEventArgs e) 
    { 
     // GET DOWNLOAD LINK 
     MessageBox.Show("Upload Finished"); 
    } 

    void wc_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e) 
    { 
     pgbStatus.Maximum = (int)e.TotalBytesToSend; 
     pgbStatus.Value = (int)e.BytesSent; 
     label6.Text = ((int)e.BytesSent * 100)/(int)e.TotalBytesToSend + "%"; 
    } 

    public void UploadFileCallback(Object sender, UploadFileCompletedEventArgs e) 
    { 
     // GET RESPOND DOWNLOAD LINK 
     HtmlAgilityPack.HtmlDocument hd = new HtmlAgilityPack.HtmlDocument(); 
     hd.LoadHtml(System.Text.Encoding.UTF8.GetString(e.Result)); 
     txtResult.Text = hd.DocumentNode.InnerHtml; 
    } 
+0

당신이 * UploadFileCompleted * 이벤트 및 체크 * e.status * 속성을 가입하시기 바랍니다 수 있습니까? –

+0

나는 가지고 있지만 일하지는 않습니다. 파일 업로드에 내 계정이 없습니다. 파일 업로드 위치가 어디입니까? – user3535116

+0

지금 귀하의 문제를 이해하기가 어렵습니다. 정교하게 작성하고 전체 코드를 게시하십시오. –

답변

1

: 당신은 WebApi를 사용해야합니다 서버 측에서

private void uploadButton_Click(object sender, EventArgs e) 
{ 
    var openFileDialog = new OpenFileDialog(); 
    var dialogResult = openFileDialog.ShowDialog(); 
    if (dialogResult != DialogResult.OK) return; 
    Upload(openFileDialog.FileName); 
} 

private void Upload(string fileName) 
{ 
    var client = new WebClient(); 
    client.UploadFileCompleted += new UploadFileCompletedEventHandler(Completed); 
    client.UploadProgressChanged += new UploadProgressChangedEventHandler(ProgressChanged); 
    var uri = new Uri("http://www.yoursite.com/UploadFile/"); 
    try 
    { 
     client.Headers.Add("fileName", System.IO.Path.GetFileName(fileName)); 
     var data = System.IO.File.ReadAllBytes(fileName); 
     client.UploadDataAsync(uri, data); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

private void Completed(object sender, UploadFileCompletedEventArgs e) 
{ 
    MessageBox.Show(e.Error?.Message ?? "Uploaded Successfully!"); 
} 

private void ProgressChanged(object sender, UploadProgressChangedEventArgs e) 
{ 
    progressBar.Value = e.ProgressPercentage; 
} 

:

[HttpPost] 
public async Task<object> UploadFile() 
{ 
    var file = await Request.Content.ReadAsByteArrayAsync(); 
    var fileName = Request.Headers.GetValues("fileName").FirstOrDefault(); 
    var filePath = "/upload/files/"; 
    try 
    { 
     File.WriteAllBytes(HttpContext.Current.Server.MapPath(filePath) + fileName , file); 
    } 
    catch (Exception ex) 
    { 
     // ignored 
    } 
    return null; 
}