Server.MapPath gibt einen Fehler aus, wenn die Bibliothek zum Zuschneiden von Webbildern verwendet wird

StackOverflow https://stackoverflow.com/questions/5977200

Frage

Ich habe ein Bild auf dem Server am Standort gespeichert:

C:\inetpub\wwwroot\imageupload\images

in meinem Code möchte ich ein Bild aus Ordnerbildern verwenden, also versuche ich es wie folgt:

Server.MapPath("/images/sample1.jpg")

Aber ich bekomme den Fehler als:enter image description here

Bitte helfen Sie mir, den Fehler zu beheben

Wie bei mehreren Antworten, in denen Sie aufgefordert werden, den Code zu posten, lautet er wie folgt

.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<%@ Register Assembly="CS.Web.UI.CropImage" Namespace="CS.Web.UI" TagPrefix="cs" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
 <cs:CropImage ID="wci1" runat="server" />
    </body>
</html>

.aspx.ks

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        wci1.Crop(Server.MapPath("/imageupload/images/sample1.jpg"));

        /*
         this part is just to show the image after its been cropped and saved! so focus on just the code above.
         */
        Image img = new Image();
        img.ImageUrl = "images/sample1.jpg?rnd=" + (new Random()).Next();  // added random for caching issue.
        this.Controls.Add(img);
    }
}

Erntemethode ist von a.dll-Datei, die ich von verwendet habe http://imagecropping.codeplex.com/

War es hilfreich?

Lösung

Es liegt ein Fehler in der CSA.Web.UI.CropImage.Crop methode, wie durch den Stack-Trace beschrieben.

Server.MapPath, meines Wissens wird keine Nullzeichenfolge zurückgegeben (es wird eine Ausnahme ausgelöst, wenn sie nicht zugeordnet werden kann - aber keine NullReferenceException).

Ich würde vorschlagen, dass Sie sich die von mir erwähnte Methode ansehen und möglicherweise auch den entsprechenden Code posten.

BEARBEITEN:

Also warf ich einen kurzen Blick auf die Crop code von das CodePlex-Projekt sie erwähnen und finden die folgenden Zeilen (Formatierung meiner):

private string ImagePath { get { return ViewState["ImageUrl"].ToString(); } }

drawing.Image image = drawing.Image.FromStream(
    new MemoryStream(
        System.IO.File.ReadAllBytes(
            HttpContext.Current.Server.MapPath(this.ImagePath)
        )
    )
);

cropedImage.Save(path);

Nun scheint es mir, dass:

  • Argument Path ist nicht null*
  • Argument ImageUrl is null**

* Obwohl es 'falsch' sein könnte, ist es im Moment nicht das Problem.

** Bedeutung des Anrufs ToString ist der Bruchfaktor in diesem Code.

Grundsätzlich ist für das Steuerelement kein Bild zum Zuschneiden festgelegt, und dies ist in Ihrem eigenen Code ersichtlich:

//currently no ImageUrl set...
<cs:CropImage ID="wci1" runat="server" />

//your'e trying to crop here without an ImageUrl...
wci1.Crop(Server.MapPath("/imageupload/images/sample1.jpg"));   

Die Lösung besteht darin, ein Bild über anzugeben ImageUrl, AFAIK, aber ich kann nicht sehen, wie das geht.

Andere Tipps

Sie haben Ihre Bilder gespeichert in imageupload\images aber als du versucht hast, sie zu packen, hast du vergessen, die hinzuzufügen imageupload Verzeichnis:

Server.MapPath("/imageupload/images/sample1.jpg")

Versuchen Sie stattdessen einen relativen Pfad: generasacodicetagpre.

Erwägen Sie die Verwendung von "~ / images / sample1.jpg" für Ihre Quelle.Das "~" ersetzt den Anwendungsnamen im Anruf an server.mappath

GEM:https://webcropimage.svn.codeplex.com/svn/trunk/CS.WebControls/WebCropImage/CropImage.cs

Methode Crop(), gibt einen Pfad an, wohin speichern das zugeschnittene Bild.

Welches Bild zugeschnitten werden soll, wird gespeichert in wci1.ImagePath

Bitte überprüfen Sie, ob dieser Wert ist null, und das sollte auf das Problem hinweisen.

Da es keine gibt <Form runat="Server">, vielleicht kann es nicht auf den Ansichtszustand zugreifen:

private string ImagePath { get { return ViewState["ImageUrl"].ToString(); } }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top