2014-01-22 37 views
0

我只想上传一个.dat文件从一个Windows手机到一个PHP脚本。如何使用windows phone base64编码文件并上传到PHP?

这是我的代码,但不起作用。任何人都可以看到为什么?

C#:

string fileBase64 = "UklGRt4lAABXQVZFZm10IBAAAAABAAEARKw..."; 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://...mysite.../upload.php"); 
request.Method = "POST"; 
request.ContentType = "application/octet-stream"; 

string postData = String.Format("file={0}", fileBase64); 

// Getting the request stream. 
request.BeginGetRequestStream 
    (result => 
    { 
     // Sending the request. 
     using (var requestStream = request.EndGetRequestStream(result)) 
     { 
      using (StreamWriter writer = new StreamWriter(requestStream)) 
      { 
       writer.Write(postData); 
       writer.Flush(); 
      } 
     } 

     // Getting the response. 
     request.BeginGetResponse(responseResult => 
     { 
      var webResponse = request.EndGetResponse(responseResult); 
      using (var responseStream = webResponse.GetResponseStream()) 
      { 
       using (var streamReader = new StreamReader(responseStream)) 
       { 
        string srresult = streamReader.ReadToEnd(); 
       } 
      } 
     }, null); 
    }, null); 

PHP:

define("UPLOAD_DIR", "./uploads/"); 


    if(isset($_POST['file'])) 
    { 
     $base64_string = $_POST['file']; 
     $ifp = fopen(UPLOAD_DIR.'aaa.dat', "wb"); 
     fwrite($ifp, base64_decode($base64_string)); 
     fclose($ifp); 

     echo "ok"; 
     echo $base64_string; 
     echo base64_decode($base64_string); 

    }else{ 
      echo "no submit"; 
     } 
+2

你是什么意思的“不工作”?怎么了? – drankin2112

+0

要回应上述评论,请描述您所看到的行为以及收到的任何异常情况。另外,如果你只是将文件保存到最后,为什么要直接发布基本64字符串而不是文件内容? – lsuarez

回答

0

你滥用HTTP协议。

这是the correct way to upload files到服务器。一定要阅读评论,你也可能想要异步做到这一点。对于异步路径,我建议您尝试C#语言的新异步等待功能,与开始/结束方法相比,这对于此类任务非常有用。

相关问题