Domanda

Ho un'immagine memorizzata sul server in posizione:

C:\inetpub\wwwroot\imageupload\images
.

Nel mio codice voglio utilizzare un'immagine da immagini di cartelle, quindi sto provando come segue:

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

Ma ottengo l'errore come: Inserire l'immagine Descrizione qui

Aiutami a risolvere l'errore

Come su diverse risposte che chiedono di pubblicare il codice, è come segue

.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.cs

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);
    }
}
.

Metodo di coltura è da un file .dll che ho usato da http://imagecropping.codeplex.com/

È stato utile?

Soluzione

L'errore è nel metodo CSA.Web.UI.CropImage.Crop, come descritto dalla traccia dello stack.

Server.MapPath, a mia conoscenza, non restituirà una stringa nulla (lancerà un'eccezione se non può mappare - ma non un NullReferenceException).

Ti suggerirei di guardare nel metodo che ho menzionato e possibilmente pubblicare anche il codice pertinente.

Modifica:

Allora, ho avuto un rapido sguardo al codice Crop da Il progetto Codeplex Si menziona e ha trovato le seguenti righe (formattazione miniera):

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);
.

Ora, mi sembra che:

Altri suggerimenti

Hai memorizzato le tue immagini in imageupload\images ma quando hai provato a afferrarli, hai dimenticato di aggiungere la directory imageupload:

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

prova invece un percorso relativo:

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

Considera l'utilizzo di "~ / Immagini / sample1.jpg" per la tua fonte."~" è sostituito dal nome dell'applicazione nella chiamata a server.mappath

Secondo: https://webcropimage.svn.codeplex.com/svn/trunk/cs.webcontrols/webcropimage/cropimage.cs

Metodo Crop (), dà un percorso dove Salva L'immagine ritagliata.

Quale immagine deve essere ritagliata in wci1.imagepath

Si prega di verificare se questo valore è null , e questo dovrebbe indicare il problema.

Poiché non esiste <Form runat="Server">, forse non può accedere al lievestate:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top