echo выводит параметр -e в сценариях bash. Как я могу предотвратить это?

Добавьте 'Универсальный Обработчик' к Вашему веб-проекту, назовите его чем-то как Image.ashx. Реализуйте его как это:

public class ImageHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        using(Image image = GetImage(context.Request.QueryString["ID"]))
        {    
            context.Response.ContentType = "image/jpeg";
            image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
        }
    }

    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

Теперь просто реализуют метод GetImage для загрузки изображения данным идентификатором, и можно использовать

<asp:Image runat="server" ImageUrl="~/Image.ashx?ID=myImageId" /> 

для отображения его. Вы могли бы хотеть думать о реализации некоторой формы кэширования в обработчике также. И помните, хотите ли Вы изменить формат изображения на PNG, необходимо использовать промежуточный MemoryStream (потому что PNGs требуют, чтобы seekable поток был сохранен).

26
задан Sam Svenbjorgchristiensensen 14 December 2010 в 04:26
поделиться

2 ответа

Вам необходимо использовать #!/bin/bash в качестве первой строки в вашем скрипте. Если вы этого не сделаете или используете #!/bin/sh, сценарий будет выполняться оболочкой Bourne, и его echo не распознает опцию -e. В общем, рекомендуется, чтобы все новые сценарии использовали printf вместо echo, если важна переносимость.

В Ubuntu sh предоставляется по символической ссылке на /bin/dash.

34
ответ дан 28 November 2019 в 07:28
поделиться

Используйте

псевдоним echo / usr / bin / echo

, чтобы заставить 'echo' вызывать coreutils 'echo, который интерпретирует параметр' -e '.

1
ответ дан 28 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: