2016-09-23 3 views
1

xamarin 양식 응용 프로그램에서 PHP 서버로 사진을 업로드하려했지만 작동하지 않는 것 같습니다. 서버가 빈 $ _FILES 요청을받습니다. 이것은 C# 코드입니다.xamarin 양식에서 PHP 서버로 사진 업로드

public async Task<bool> Upload(MediaFile mediaFile, string filename) 
    { 
     byte[] bitmapData; 
     var stream = new MemoryStream(); 
     mediaFile.GetStream().CopyTo(stream); 
     bitmapData = stream.ToArray(); 
     var fileContent = new ByteArrayContent(bitmapData); 

     fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream"); 
     fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") 
     { 
      Name = "fileUpload", 
      FileName = filename 
     }; 

     string boundary = "---8393774hhy37373773"; 
     MultipartFormDataContent multipartContent = new MultipartFormDataContent(boundary); 
     multipartContent.Add(fileContent); 


     HttpClient httpClient = new HttpClient(); 
     HttpResponseMessage response = await httpClient.PostAsync("http://www.url.com/upload.php", multipartContent); 
     response.EnsureSuccessStatusCode(); 

     if (response.IsSuccessStatusCode) 
     { 
      string content = await response.Content.ReadAsStringAsync(); 

      return true; 
     } 
     return false; 
    } 

다음은 업로드 된 이미지를 수신하는 PHP 파일입니다. 게시 된 이미지의 내용을 파일에 저장하려고했지만 파일에는 빈 배열 만 있고 항상 "실패"가 반환됩니다. 제발 내가 잘못 놓친 게 뭐지? 웹 검색했지만 문제를 이해할 수 없습니다.

$uploads_dir = 'uploads/'; 
    $req_dump = print_r($_FILES, true); 
    $fp = file_put_contents('data.txt', $req_dump); 
    if (isset($_FILES["fileUpload"]["tmp_name"]) AND is_uploaded_file($_FILES["fileUpload"]["tmp_name"])) 
    { 
    $tmp_name = $_FILES["fileUpload"]["tmp_name"]; 
    $name = $_FILES["fileUpload"]["name"]; 
    $Result = move_uploaded_file($tmp_name, "$uploads_dir/$name"); 
    echo "Success"; 
    } 
    else 
    { 
    echo "Failure"; 
    } 
+0

될 것이다. 그럼 그냥 PHP에서'move_uploaded_file ($ _ FILES [ "image"] [ "tmp_name"], 'path');'잘 작동합니다. 그냥 간단한 것으로 시작한 다음 상황을 추가하여 어떤 일이 발생하는지 확인하십시오. – dev

답변

0

AND 연산자는 실제로 당신에게 적합하지 않습니다. (온라인 4 호). 때로는 예상치 못한 일부 동작이 표시되기도합니다. (자세한 내용은 'AND' vs '&&' as operator을 참조하십시오).

논리적 AND를 원하면 & & 연산자를 대신 사용하십시오. 라인은 내가` "응용 프로그램/octet-stream을"`에` "이미지/JPG"를`변경 C# 코드에서

if (isset($_FILES["fileUpload"]["tmp_name"]) && is_uploaded_file($_FILES["fileUpload"]["tmp_name"])) 
+0

AND를 &&로 변경했지만 여전히 동일한 문제가 있습니다. –

관련 문제