Как я могу прочитать опубликованный файл запроса в модуле IIS? - PullRequest
0 голосов
/ 13 января 2020

Я написал модуль IIS, и он работает нормально. Я хочу получить опубликованный файл из запроса.

В приведенном ниже коде я могу получить отправленные данные формы и просмотреть файл в заголовке:

IHttpRequest * pHttpRequest = pHttpContext->GetRequest();
if (pHttpRequest != NULL)
{
    LPCSTR body;
    DWORD cbBytesReceived = 1024;
    void * pvRequestBody = pHttpContext->AllocateRequestMemory(cbBytesReceived);

    if (NULL == pvRequestBody)
    {
        pProvider->SetErrorStatus(hr);
        return RQ_NOTIFICATION_FINISH_REQUEST;
    }

    if (pHttpRequest->GetRemainingEntityBytes() > 0)
    {
        while (pHttpRequest->GetRemainingEntityBytes() != 0)
        {
            hr = pHttpRequest->ReadEntityBody(
                pvRequestBody, cbBytesReceived, false, &cbBytesReceived, NULL);
            if (FAILED(hr))
            {
                if (ERROR_HANDLE_EOF != (hr & 0x0000FFFF))
                {
                    pProvider->SetErrorStatus(hr);
                    return RQ_NOTIFICATION_FINISH_REQUEST;
                }
            }

            body = (LPCSTR)pvRequestBody;
            pszResult = pszResult + body;
        }
    }
}

Результат:

-----------------------5r707ac9a9687yu

Content-Disposition: form-data; name="file"; filename="1.zip"

Content-Type: application/octet-stream

PKþóÐMš`_ÿív(X[úM/­xvœ5a¢~¯²²ÊÆÎÈá"}å
lIœì*7·®-W§Xþn¹DçvÃŒØÀ>ÊHñ\N-kÂ¥ûºÂm'ŒäõÚÌŸÏŽ)ããSqŽT3ÕïDñ?ËWÇKy«zAÉ÷øŒ¿ÂÇ   

Я попытался преобразовать часть файла (PKþóÐMš`_ÿív ...) в двоичный файл и записать файл, но файл обрезан, потому что заголовок содержит всю информацию (все опубликованные файлы, содержимое, ...), а не очистить двоичный файл.

Как записать отправленные файлы на диск (двоичный / текстовый)?

...