2017-11-09 19 views
0

이 같은 다중 양식을 사용하여 입력 파일을 취하는 푸른 기능을 가지고 -하늘색 기능이 제대로 작동하지 않습니까?

public static class function 
{ 
    [FunctionName("Function1")] 
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log,string imagename) 
    { 


     // parse query parameter 
     string name = req.GetQueryNameValuePairs() 
      .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0) 
      .Value; 

     // Get request body 
     dynamic data = await req.Content.ReadAsAsync<object>(); 

     // Set name to query string or body data 
     name = name ?? data?.name; 


     log.Info("C# HTTP trigger function processed a request."); 


     return name == null 
      ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 
      : req.CreateResponse(HttpStatusCode.OK, "Hello " + name); 
    } 

당신은 내가 파일에 아무것도하고 있지 않다 순간에 볼 수 있듯이. 나는 그것을 먼저 실행하려고 노력하고있다. 내가 제대로 Auth0를 구성

 { 
"swagger": "2.0", 
    "info": { 
    "version": "1.0.0", 
    "title": "Testfunction" 
    }, 
    "host": "Testfunction.azurewebsites.net", 
"paths": { 
    "/api/Function1": { 
    "post": { 
    "tags": [ 
     "Function1" 
    ], 
    "operationId": "UploadImage", 
    "consumes": [ 
     "multipart/form-data" 
    ], 
    "produces": [ 
     "application/json", 
     "text/json", 
     "application/xml", 
     "text/xml" 
    ], 
    "parameters": [ 
     { 
     "name": "file", 
     "in": "formData", 
     "required": true, 
     "type": "file", 
     "x-ms-media-kind": "image" 
     }, 
     { 
     "name": "fileName", 
     "in": "query", 
     "required": false, 
     "type": "string" 
     } 
    ], 
    "responses": { 
     "200": { 
     "description": "Saved successfully", 
     "schema": { 
      "$ref": "#/definitions/UploadedFileInfo" 
     } 
     }, 
     "400": { 
     "description": "Could not find file to upload" 
     } 
    }, 
    "summary": "Image Upload", 
    "description": "Image Upload" 
    } 
}}, 
"definitions": { 
"UploadedFileInfo": { 
    "type": "object", 
    "properties": { 
    "FileName": { 
     "type": "string" 
    }, 
    "FileExtension": { 
     "type": "string" 
    }, 
    "FileURL": { 
     "type": "string" 
    }, 
    "ContentType": { 
     "type": "string" 
    } 
    } 
} 

}, 
    "securityDefinitions": { 
"AAD": { 
    "type": "oauth2", 
    "flow": "accessCode", 
    "authorizationUrl": "https://login.windows.net/common/oauth2/authorize", 
    "tokenUrl": "https://login.windows.net/common/oauth2/token", 
    "scopes": {} 
    } 
}, 
"security": [ 
    { 
    "AAD": [] 
    } 
], 
"tags": [] 

} 

하지만 Powerapps이를 실행하려고하면, 그것은 응답으로 알 수없는 오류로 반환

내 자신감 파일은 다음과 같다.

이미지를 PDF로 변환하려는 하늘색 기능으로 보내려고합니다. 어떻게해야합니까?

+0

오류 메시지에 대한 자세한 내용을 알지 못하면이 질문에 대한 답을 제공 할 것을 권합니다. https://stackoverflow.com/a/8240132/7982031 사용자의 상태와 관련이있을 수 있습니다. 요청 본문에서 파일을 가져 오려고합니다. –

답변

1

코드에 따르면 사용자가 precompiled functions을 사용하고있는 것 같습니다. HttpTrigger 함수 코드가 제공된 swagger 파일과 일치하지 않는 것을 발견했습니다. 간단한 방법을 위해, 난 그냥 푸른 포털을 사용하여 다음과 같이 내 HttpTrigger 기능을 생성 :

run.csx :

using System.Net; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage request, TraceWriter log) 
{ 
    //Check if the request contains multipart/form-data. 
    if (!request.Content.IsMimeMultipartContent()) 
    { 
     return request.CreateResponse(HttpStatusCode.UnsupportedMediaType); 
    } 

    //The root path where the content of MIME multipart body parts are written to 
    string root = Path.Combine(System.Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\HttpTriggerCSharp1\"); 
    var provider = new MultipartFormDataStreamProvider(root); 

    // Read the form data 
    await request.Content.ReadAsMultipartAsync(provider); 

    List<UploadedFileInfo> files = new List<UploadedFileInfo>(); 
    // This illustrates how to get the file names. 
    foreach (MultipartFileData file in provider.FileData) 
    { 
     var fileInfo = new FileInfo(file.Headers.ContentDisposition.FileName.Trim('"')); 
     files.Add(new UploadedFileInfo() 
     { 
      FileName = fileInfo.Name, 
      ContentType = file.Headers.ContentType.MediaType, 
      FileExtension = fileInfo.Extension, 
      FileURL = file.LocalFileName 
     }); 
    } 
    return request.CreateResponse(HttpStatusCode.OK, files, "application/json"); 
} 

public class UploadedFileInfo 
{ 
    public string FileName { get; set; } 
    public string FileExtension { get; set; } 
    public string FileURL { get; set; } 
    public string ContentType { get; set; } 
} 

참고 : 마임 다중 본체 부품은 귀하의 온도에 저장됩니다 폴더. file.LocalFileName을 통해 임시 파일 전체 경로를 검색 한 다음 관련 라이브러리를 사용하여 변환을 처리 한 다음 PDF 파일을 저장하고 임시 파일을 제거한 다음 변환 된 파일을 클라이언트에 반환 할 수 있습니다.

테스트 :

enter image description here

또한, 나는 당신이 Azure Blob Storage 아래에 파일을 저장하는 것이 좋습니다. 그리고이 공무원 toturial을 참조하여 시작할 수 있습니다.