Manipulating File Read Access

The java.io.File class contains a method setReadOnly which takes no parameters and makes a file read only. Javadoc:
Marks the file or directory named by this abstract pathname so that only read operations are allowed. After invoking this method the file or directory is guaranteed not to change until it is either deleted or marked to allow write access. Whether or not a read-only file or directory may be deleted depends upon the underlying system.
Does anyone know whether or not it is possible to do the opposite, and make a read only file writeable in a platform independant manner? (I.e. Not by using native code or System.exec).
Dave

I've also noticed the java.io.FilePermission class which has a notion of read/write/exec/delete permissions, but my impression is that this class is merely a question of granting those permissions through a SecurityManager to parts of a JVM.
So, I would expect that even if the SecurityManager gives permission to write to a file, if that file is read-only in the underlying file system, then it would still not be able to write to the file. If someone who is more familiar with the Permissions system can correct or confirm this, that would be helpful, too!
Thanks,
Dave

Similar Messages

  • File read access denied for signed applet

    Hi:
    I have a signed applet with a certificate generated with the keytool. Yet, I keep getting this error:
    java.lang.Exception: java.security.AccessControlException:
        access denied (java.io.FilePermission C:\WINDOWS\system32\aetpkss1.dll read)The error is produced when the method loadKeyStore(pin) below is called.
        private KeyStore ks;
        private Provider provider;
        private static final String providerName    = "PKCS11";
        private static final String providerLibrary = "aetpkss1.dll";
        public void loadKeyStore(String pin) throws IOException,
         CertificateException, KeyStoreException, NoSuchAlgorithmException {
         if (provider == null)
             registerProvider(providerLibrary);
         try {
             ks = KeyStore.getInstance(providerName,provider);
         } catch (Exception e) {
             throw new KeyStoreException("Failed get keystore instance\n"
                             + e.getMessage());
         try {
             ks.load(null, pin.toCharArray());
         } catch (Exception e) {
             throw new KeyStoreException("Failed load keystore\n"
                             + e.getMessage());
        public void registerProvider(String library)
         throws FileNotFoundException, KeyStoreException {
         String fileName;
         if (new File(library).isAbsolute())
             fileName = library;
         else
             fileName = getAbsolutePath(library);
         if (!(new File(fileName).exists()))
             throw new FileNotFoundException("No such file: " + fileName);
         String config = "name = " + providerName + "\n"
             + "library = " + fileName;
         ByteArrayInputStream confStream =
             new ByteArrayInputStream(config.getBytes());
         try {
             provider = new sun.security.pkcs11.SunPKCS11(confStream);
             Security.addProvider(provider);
         } catch (Exception e) {
             throw new KeyStoreException("Can initialize " +
                             "Sun PKCS#11 provider. Reason: " +
                             e.getCause().getMessage());
        private String getAbsolutePath(String lib) throws FileNotFoundException {
         String[] searchPath;
         /* NOTE: This should be modified to suit different versions of   *
          *       Windows and not just Windows XP                         */
         if (System.getProperty("os.name").matches("^(?i)Windows.*")) {
             searchPath = new String[] { "C:\\WINDOWS\\system32" ,
                             "C:\\java" };
         } else {
             searchPath = new String[] { "/usr/local/lib/" };
         for (int i = 0; i < searchPath.length; i++) {
             if ((new File(searchPath[i] + File.separator + lib).exists()))
              return (searchPath[i] + File.separator + lib);
         throw new FileNotFoundException("Library not in search path " + lib);
        }The above code is called by a java script, the class' constructor is empty.
    The error appears not to be caught by my code. I have tried to insert try/catch statements everywhere to figure out where this error is produced.
    The code is write off of the applet for signing with a smart card by Svetlin Nakov - and his applet works!
    I have also made a CLI application that uses the above code and it works perfectly.
    So: Something is wrong either with my certificate, the signing method, signature verification or something completely different. Any hints?
    The certificate I generated with
    keytool -genkey -keystore mystore -alias me
    keytool -seflcert -keystore mystore -alias meI have tired both with and without the selfcert step.
    Thanks! Erik

    The problem has been identified: Placing registerProvider() in the constructor the error no longer occurs, instead an error is produced when the key store is loaded.
    It appears that the javascript code is not trusted and so, even though the applet is signed, access privileges are restricted to those of the java script.
    A solution to this problem is not clear, but possibly, serving the pages from a trusted server, the java script will be trusted, some documentation seem to indicate.

  • File Read:  Access Denied

    This is the exception I get for every file that is being read from Program Files or Program data folder. I get this exception for some other files also.
    FROM FEjava.io.FileNotFoundException: C:\ProgramData\Adobe\Photoshop Elements\5.0\Locale\en_us\How-Tos\recipes\adobe\013\020 (Access is denied)
    How can I remove this exception ? ?

    Err, he said the file is being read. How will making it not read-only help that?
    @OP your problem is that you don't have operating system permission to access that file or possibly that directory. The solution to this lies in the operating system, not in Java.

  • Error message Indesign:Either the file does not exist, you do not have read access to it, or use the file in another application.

    I've got problem with opening a file in InDesign. The file type is an InDesign Markup Document. The error message is: Either the file does not exist, you do not have read access to it, or use the file in another application. What's wrong?

  • Why can't read access log file in real-time? (Oracle Weblogic Server 10.3)

    We can't read access log file in real-time. If access log is rotation to new file so can read access log file but can't read real-time.
    *** Oracle Weblogic Server versions 10 R3

    what's your meaning? try this command "tail -f access.log".
    Threre is a buffer about 8K for WebLogic to write the access info into the log files, so you can't see the access info untill the buffer is full.

  • Error 2 for write/read access to a file. File = /usr/sap/SID/SYS/global/999

    hi
    when i am checking update statistics in  db13  it is not creating any log information, and more over it is creating error in sm21 like
    Error 2 for write/read access to a file. File = /usr/sap/<SID>/SYS/global/999JOBLG/0001X06000603X23459.
    can any one help me.
    regards
    subhani.

    Duplicate post
    Read and Follow the Forum Rules

  • I have connected an external hard drive to my new macbook pro.  I only have read access.  How do I copy folders to the external hard drive?

    I have a new Macbook pro retina.  I have connected a WD external hard drive, but have only read access.  I want to back up my computer, and have the ability to archaive files.  Any suggestions?

    I have connected a WD external hard drive, but have only read access.
    As ds store already pointed out, if the drive is formatted as NTFS, you can't write to it. Fortunately, the fix is easy, just erase the hard drive using Disk Utility as Mac OS Extended (Journaled).
    I want to back up my computer, and have the ability to archaive files.  Any suggestions?
    Backups and archival backups are not necessarily the same thing. An archival backup is to be kept indefinitely far into the future, and should never be changed after it is created. That does not mesh well with being on the same drive as a backup maintained day-to-day. Ideally, archival backups should be written to one drive - possibly multiple backups, but each one should never be touched after it is written - and other backups should be maintained with greater frequency on one or more other drives.
    You can get a bit of compromise with an incremental backup, like what Time Machine does. That will keep old data as long as there's still free space on the drive, then will start removing the oldest copies of files to make space for newer stuff when necessary. Another alternative is the way Carbon Copy Cloner does incremental backups, where the data keeps piling up until the drive is full and then the backups fail until you remedy the situation. (This could allow you to fill up a drive and then put it on a shelf as an archival backup and start a new backup on a new drive.)
    If you can specify more what you want to do, we can advise you better.

  • How to make files read only

    I want to make files read only.  Any workaround is welcomed.

    t quinn wrote:
    ElMagoElGato,
    I am glad to give some help but I am still confused because we are having different experiences. I have been able to lock Tables on my mac and have that lock respected in iOS for a long while now. Easy to unlock, impossible to relock.  With the most recent upgrade I can lock tables after tapping the upper left dot to select the whole table and going to "arrange" in the paintbrush.
    When you say worksheet are you meaning the entire file? When you say file lock are you meaning password protection? You can see I am confused.
    quinn
    Based on what ElMagoElGato has described, password protecting would be of no value to him. Once the file is accessed, it is in edit mode. Unless I'm really missing something.
    Files I have imported from Mac iworks apps with elements locked stay locked for me in iOS. Not sure what the problem is.

  • Error while reading access data (URL, user,password) for the Adapter Engine

    Hi,
    Any idea on below message? I am doing file to file scenario and got the below tarce from sxmb_moni.
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Call Adapter
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="INTERNAL">AE_DETAILS_GET_ERROR</SAP:Code>
      <SAP:P1>af.pi1.piserver1</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>no_messaging_url_found: Unable to find URL for Adapter Engine af.pi1.piserver1</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Error while reading access data (URL, user, password) for the Adapter Engine af.pi1.piserver1</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Thanks
    Balaji

    It looks like the adapter engine is not able to register him self on SLD, you have to check in the SLD the "Exchange Infrastructure" domain, you have to verify restarting the J2EE the adapter engine update the entries in the SLD related to the specific XI Domain.
    Launch Visual Administrator >> Server >> Services >> SAP AF CPA Cache
    Enter the appropriate values for:
    SLD.selfregistration.hostname (Use fully qualified hostname)
    SLD.selfregistration.httpPort
    SLD.selfregistration.httpsPort
    Sandro

  • InDesign lock files, read only permissions...

    I've had this strange problem for over a year now, unsure as to why it was happening. Now I've realized what the problem is, but I don't know how to fix it.
    We build ads in InDesign. Production, who builds the ads, has basically full control to the ads network drive. Sales, on the other hand, has only read access. They want to print ads out on occasion, but I don't want them to be able to screw the ad up by mistake (they know just enough to get the ad to print).
    Here's the problem...
    Someone one sales opens an ad. Well, they don't have create or write permissions (Win 2003 server, XP workstations). So the InDesign lock file is never created. But they do obtain a read lock on the file on a Windows/OS level.
    So what happens is, the production staff opens the ad while the sales person opens the ad. There's no lock file, so the production person isn't warned that the file is open. But because there's an OS lock on the ad, the ad opens for the production staff, but it opens as read only.
    My first problem is that I don't know how to fix this without giving our sales people full access, which I cannot do. The second problem is that any app that happens to access those files (shadow copy perhaps???) will cause the same headache for the production staff, as there is contention to the file.
    So I'm in a catch-22 here. I'm wondering if any of you have been in the same boat and know if there is a work around.
    We're using InDesign 3 (CS) on XP.

    Or export to PDF every time the ad is updated, and only give them access to the PDFs through Reader - keep them away from InDesign completely. If you are only giving them InDesign to view ads, you could save money on unnecessary InDesign licenses.
    k

  • SAP File System Access - SLD Naming Convention/Suggestions

    I would like to access our ECC file system to pick up files we will use to create Idocs.   
    I'm wondering the best way to describe the file system access in the SLD.   
    I have a business system for the main client on the ECC  system (BS_ED1CLNT010) for example but the OS isn't client specific.    I could use this as the Business System in the scenario and define a file adapter that connects to the unix server.
    Any thoughts?

    Maybe I didn't frame my question properly.  
    In the ECC system we have multiple clients (20,30,40, etc).  If I am going to post an Idoc to a client in this system I need to define each as a business system in the SLD and import this to the Integration Directory.    So I would have BS_XXXCLNT010, BS_XXXCLNT020, etc, one for each client.   These all share the same Technical System.    If I want to post an Idoc to a client on the ECC system I have to define a Business System and interface to that and every client that will receive an Idoc. (as well as the ALE settings on the ECC)
    Each of these reside on the same SAP server (sap00001 for example) and there is a directory (/public for example)  on this server.     This isn't client specific.  
    I wish to pick up a file from the ECC file system and post a client on the ECC system (maybe different ones based on the data in the file).   
    I don't want to define the file adapter under BS_XXXCLNT020 since it isn't specifc to client 020 although that would work.  
    Do I create a new TS in the SLD as third party, stand alone java, and a BS for that?    TS_XXX_FILESYSTE (3rd party).  BS_XXX_FILESYSTEM for the TS?
    I'm really looking for clarity in the definition of the SLD.

  • No read access to system tables

    Hi
    i try to migrate access db to oracle and when testing connection it gives me error message says "no read access to system tables modify access db before retrying"
    what to do?
    thanks in advance.

    Access tab
    For a connection to a Microsoft Access database, click Browse and find the database (.mdb) file. However, to be able to use the connection, you must first ensure that the system tables in the database file are readable by SQL Developer, as follows:
    Open the database (.mdb) file in Microsoft Access.
    Click Tools, then Options, and on the View tab ensure that System Objects are shown.
    Click Tools, then Security, and, if necessary, modify the user and group permissions as follows: select all tables whose names start with Msys, and give the Admin user at least Read Design and Read Data permission on these tables. Save changes and close the Access database file.
    Create and test the connection in SQL Developer.

  • Detecting when a file is accessed

    Hello all! This is my first time on these forums, so please be kind. And let me know if there is a better place to post this question or a better way to find the answer, because I know you all are being very kind by answering Q's here, and I wouldn't want to waste anybody's time. Oh yeah, and my Java is reeeally rusty. But time to change that, eh? Anyway, on to my question:
    Is there a way to find out when a file is accessed? For example, in Windows, you can look at the 'properties' of a file, and it will tell you the last time it was accessed. Is there a Java method that will give me this information (but preferably on any platform, like Linux)?
    It doesn't have to be exactly like the Windows "last accessed" information. Really, all I need to be able to do is detect, in real time, when a file is accessed.
    I wasn't quite sure where to look for this. Like I said, my Java is rusty (and I'm a total beginner anyway), but I know I never encountered this sort of thing before. So if you just give me a little nudge in the right direction, I'd really appreciate it. Thanks!

    Ha! I told you I was rusty... the answer was pretty darn obvious. Obvious enough for a loon like me to find on my own! Looks like this method is the one I would need:
    Java.IO.File.LastModified()
    http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#lastModified()
    Ugh, shoulda searched more before posting, sorry. But on a related Q, what would be the best way to wait until this is changed?

  • Programmatic read access to (conditional disable) symbols in project

    Hi,
    I'm wondering if there's a way to achieve programmatic way to achieve a read access to the symbols defined within a project apart from the conditional disable structure? I have tried access via VI server, but haven't succeeded
    For me, it would be a nice way of passing certain enviroment settings....
    Thanks a lot!
    Oli
    Sorry this should've been posted to the LabVIEW board....
    Message Edited by Oli_Wachno on 04-12-2007 03:13 PM
    Programming languages don't create bad code, programmers create bad code....

    Unfortunately there is no other way to access the symbols via VI server. It is not possible to edit these symbols at runtime in general, which would not make sense, because these symbols are ment to give the user the opportunity to do conditional compiling, and so the state of these symbols needs to be set BEFORE the VI is compiled/started.
    You could accress the value of these symbols, by reading the .lvproj File directly. The .lvproj files are XML-Files, and there is a item called
    <Property Name="CCSymbols" Type="Str"> .XXX.</Property>  in the XML File. The XXX stands for the name and value of a symbol.
    You could use File I/O functions to access these values.
    Hope this helps!
    André

  • Social comment control in custom page layout stucks at "Working" for read access users

    Hi,
    I created a custom page layout which is attched to my custom content type.
    i have a custom field control which is derived from RichImageField.
    i have also added a social comment control to the page layout using
    <SharePointPortalControls:SocialCommentControl ID="SocialCommentControl1" runat="server"  />.
    Now the problem is, an user who have read access for a pages library should post comments. but its not working and when the user clicks post button it stucks at working. but when the user is given contribute access then it works and the comments are posted.
    And one more thing is if i remove my custom field control from the page layout, then user with read access can post the comment without any issues.
    i am sure the issue is caused by my custom field control but dont know how to solve it. i dont want to give contribute access to the users as they can edit the content of the page also. Any help would be appreciated.
    This is the custom field control code.
    public class mycompanyRichImageField : RichImageField
    public static string webimage = null;
    #region Private variables
    /// <summary>
    /// File upload control used to upload image.
    /// </summary>
    private FileUpload fileUpload;
    /// <summary>
    /// Upload button.
    /// </summary>
    private Button btnSave;
    /// <summary>
    /// Delete button.
    /// </summary>
    private Button btnClear;
    /// <summary>
    /// Article image.
    /// </summary>
    private Image imgPicture;
    /// <summary>
    /// Image width.
    /// </summary>
    private DropDownList ddlWidth;
    /// <summary>
    /// Temporary store image url.
    /// </summary>
    private Label lblFileName;
    /// <summary>
    /// Image text.
    /// </summary>
    private TextBox txtImage;
    /// <summary>
    /// Value of image field.
    /// </summary>
    private ImageFieldValue pageImage;
    /// <summary>
    /// List item - current article.
    /// </summary>
    private SPListItem ArticlePage = SPContext.Current.ListItem;
    /// <summary>
    /// The first image width dropdown list options, default value 240 px.
    /// </summary>
    // private int imageWidthWide = 400;
    //private int height = 225;
    /// <summary>
    /// The second image width dropdown list options, default value 120 px.
    /// </summary>
    private int imageWidthNarrow = 126;
    /// <summary>
    /// Picture library to store the image files.
    /// </summary>
    private string imageLibrary = "Images";
    /// <summary>
    /// List field to store Article image.
    /// </summary>
    private string imageField = "Page Image";
    /// <summary>
    /// List field to store image text.
    /// </summary>
    private string imageTextField = "Image Text";
    private string preview = "Preview";
    /// <summary>
    /// List field to store rollup image.
    /// </summary>
    private string rollupImageField = "Rollup Image";
    /// <summary>
    /// Whether to update the rollup image using the current image.
    /// </summary>
    private bool updateRollupImage = false;
    /// <summary>
    /// Whether to display image text.
    /// </summary>
    private bool enableImageText = true;
    #endregion
    #region Properties
    /// <summary>
    /// Gets or sets the first choice of image width.
    /// </summary>
    //public int ImageWidthWide
    // get
    // return this.imageWidthWide;
    // set
    // this.imageWidthWide = value;
    //public int ImageHeight
    // get
    // return this.height;
    // set
    // this.height = value;
    /// <summary>
    /// Gets or sets the second choice of image width.
    /// </summary>
    public int ImageWidthNarrow
    get
    return this.imageWidthNarrow;
    set
    this.imageWidthNarrow = value;
    /// <summary>
    /// Gets or sets the name of the picture library that is used to store image files.
    /// </summary>
    public string ImageLibrary
    get
    return this.imageLibrary;
    set
    this.imageLibrary = value;
    /// <summary>
    /// Gets or sets the field name of image.
    /// </summary>
    public string ImageField
    get
    return this.imageField;
    set
    this.imageField = value;
    /// <summary>
    /// Gets or sets the field name of image text.
    /// </summary>
    public string ImageTextField
    get
    return this.imageTextField;
    set
    this.imageTextField = value;
    /// <summary>
    /// Gets or sets the field name of rollup image.
    /// </summary>
    public string RollupImageField
    get
    return this.rollupImageField;
    set
    this.rollupImageField = value;
    public string Preview
    get
    return this.preview;
    set
    this.preview = value;
    /// <summary>
    /// Gets or sets a value indicating whether to update rollup image using current image.
    /// </summary>
    public bool UpdateRollupImage
    get
    return this.updateRollupImage;
    set
    this.updateRollupImage = value;
    /// <summary>
    /// Gets or sets a value indicating whether the image text should be displayed.
    /// </summary>
    public bool EnableImageText
    get
    return this.enableImageText;
    set
    this.enableImageText = value;
    #endregion
    #region Override methods
    /// <summary>
    /// Using get method instead of set method to set the value.
    /// set method cannot be used here.
    /// </summary>
    public override object Value
    get
    ImageFieldValue value = new ImageFieldValue();
    value.ImageUrl = string.IsNullOrEmpty(this.lblFileName.Text) ? this.imgPicture.ImageUrl : this.lblFileName.Text;
    // value.Width = string.IsNullOrEmpty(this.ddlWidth.Text) ? this.ImageWidthWide : Convert.ToInt32(this.ddlWidth.Text);
    // value.Height = this.ImageHeight;
    ////update the page rollup image.
    if (this.UpdateRollupImage)
    this.ArticlePage[this.RollupImageField] = value;
    if (this.EnableImageText)
    this.ArticlePage[this.ImageTextField] = this.txtImage.Text;
    this.ArticlePage.SystemUpdate(false);
    return value;
    set
    base.Value = value;
    /// <summary>
    /// Intialize all controls.
    /// </summary>
    protected override void CreateChildControls()
    this.pageImage = (ImageFieldValue)this.ArticlePage[this.imageField];
    this.ddlWidth = new DropDownList();
    this.ddlWidth.Width = 99;
    // this.ddlWidth.Items.Add(this.ImageWidthWide.ToString());
    this.ddlWidth.Items.Add(this.ImageWidthNarrow.ToString());
    if (this.pageImage != null && !string.IsNullOrEmpty(this.pageImage.ImageUrl))
    // if (this.pageImage.Width >= this.ImageWidthWide)
    // // this.ddlWidth.SelectedIndex = 0;
    //else
    // // this.ddlWidth.SelectedIndex = 1;
    // this.Controls.Add(this.ddlWidth);
    this.imgPicture = new Image();
    if (this.pageImage != null && !string.IsNullOrEmpty(this.pageImage.ImageUrl))
    this.imgPicture.ImageUrl = SPContext.Current.Site.Url + this.pageImage.ImageUrl;
    this.Controls.Add(this.imgPicture);
    this.fileUpload = new FileUpload();
    this.fileUpload.Width = 180;
    this.Controls.Add(this.fileUpload);
    this.btnSave = new Button();
    this.btnSave.Text = "Upload";
    this.btnSave.CausesValidation = false;
    this.btnSave.Visible = string.IsNullOrEmpty(this.imgPicture.ImageUrl) ? true : false;
    this.Controls.Add(this.btnSave);
    this.btnSave.Click += new EventHandler(this.BtnSave_Click);
    this.btnClear = new Button();
    this.btnClear.Text = "Delete";
    this.btnClear.CausesValidation = false;
    this.btnClear.Visible = !this.btnSave.Visible;
    this.Controls.Add(this.btnClear);
    this.btnClear.Click += new EventHandler(this.BtnClear_Click);
    this.lblFileName = new Label();
    this.Controls.Add(this.lblFileName);
    if (this.EnableImageText)
    this.txtImage = new TextBox();
    this.txtImage.TextMode = TextBoxMode.MultiLine;
    this.txtImage.Rows = 4;
    this.txtImage.Text = this.ArticlePage[this.ImageTextField] == null ? string.Empty : this.ArticlePage[this.ImageTextField].ToString();
    this.Controls.Add(this.txtImage);
    /// <summary>
    /// Render the field in page edit mode.
    /// </summary>
    /// <param name="output">Output stream.</param>
    protected override void RenderFieldForInput(System.Web.UI.HtmlTextWriter output)
    output.Write("<div style='padding-bottom:12px'>");
    if (!string.IsNullOrEmpty(this.imgPicture.ImageUrl))
    output.Write("<br />");
    // this.imgPicture.Width = ((ImageFieldValue)this.Value).Width;
    // this.imgPicture.Height = ((ImageFieldValue)this.Value).Height;
    this.imgPicture.RenderControl(output);
    if (this.EnableImageText)
    this.txtImage.Width = this.imgPicture.Width;
    if (this.EnableImageText)
    output.Write("<br />");
    this.txtImage.RenderControl(output);
    output.Write("<br /><br />");
    this.fileUpload.RenderControl(output);
    this.btnSave.RenderControl(output);
    this.btnClear.RenderControl(output);
    output.Write("<br /><br />");
    //output.Write("Width:");
    //this.ddlWidth.RenderControl(output);
    output.Write("</div>");
    /// <summary>
    /// Render the field in page display mode.
    /// </summary>
    /// <param name="output">Output stream.</param>
    protected override void RenderFieldForDisplay(System.Web.UI.HtmlTextWriter output)
    if (this.ListItemFieldValue != null)
    output.Write("<div style='padding-bottom:12px'>");
    base.RenderFieldForDisplay(output);
    if (this.EnableImageText && this.ArticlePage[this.ImageField] != null
    && this.ArticlePage[this.ImageTextField] != null)
    //string strImgWidth = string.IsNullOrEmpty(this.ddlWidth.Text) ? this.ImageWidthWide.ToString() : this.ddlWidth.Text;
    //string strImgHgt = this.ImageHeight.ToString();
    output.Write("<div style='width:");
    // output.Write(strImgWidth);
    // output.Write(this.imgPicture.ImageUrl);
    // output.Write("<div style='height:");
    // output.Write(strImgHgt);
    output.Write(";margin-right:4px;' align='left'>");
    output.Write(this.ArticlePage[this.ImageTextField].ToString());
    output.Write("</div>");
    output.Write("</div>");
    #endregion
    #region Button events
    /// <summary>
    /// Delete image file from the library and empty the image field.
    /// </summary>
    /// <param name="sender">Delete button.</param>
    /// <param name="e">No arguments.</param>
    protected void BtnClear_Click(object sender, EventArgs e)
    ////remove the image file from the Images library
    using (SPSite site = new SPSite(
    SPContext.Current.Web.Url,
    SpSecurityHelper.GetSystemToken(SPContext.Current.Site)))
    using (SPWeb currentWeb = site.OpenWeb())
    SPDocumentLibrary imageList = (SPDocumentLibrary)currentWeb.Lists[this.ImageLibrary];
    SPFolder rootFolder = imageList.RootFolder;
    try
    currentWeb.AllowUnsafeUpdates = true;
    rootFolder.Files.Delete(this.imgPicture.ImageUrl);
    rootFolder.Update();
    catch
    ////cannot delete specified file, this means file doesn't exist, the file must be deleted
    ////directly in the Images library by someone
    ////don't do anything here
    finally
    currentWeb.AllowUnsafeUpdates = false;
    if (this.pageImage != null)
    this.pageImage.ImageUrl = string.Empty;
    this.imgPicture.ImageUrl = string.Empty;
    this.lblFileName.Text = string.Empty;
    this.btnClear.Visible = false;
    this.btnSave.Visible = true;
    /// <summary>
    /// Upload image file to library and fullfilled the image field.
    /// </summary>
    /// <param name="sender">Upload button.</param>
    /// <param name="e">No argument.</param>
    protected void BtnSave_Click(object sender, EventArgs e)
    this.ArticlePage[this.ImageTextField] = this.txtImage.Text;
    this.ArticlePage.SystemUpdate(false);
    string fileName = this.fileUpload.FileName;
    ////validate file name
    if (fileName == string.Empty || !this.fileUpload.HasFile)
    this.lblFileName.Text = string.Empty;
    if (this.pageImage == null)
    this.Page.ClientScript.RegisterStartupScript(typeof(string), "NoImage", "<script>alert('No image found, please select an image.')</script>", false);
    else
    using (SPSite site = new SPSite(
    SPContext.Current.Web.Url,
    SpSecurityHelper.GetSystemToken(SPContext.Current.Site)))
    using (SPWeb currentWeb = site.OpenWeb())
    SPDocumentLibrary imageList = (SPDocumentLibrary)currentWeb.Lists[this.ImageLibrary]; ////Images
    SPFolder rootFolder = imageList.RootFolder;
    ////the image file name must be unique except for the file name extension
    string imageName = this.ArticlePage.UniqueId.ToString("N") + this.FieldName + Path.GetExtension(fileName);
    ////first delete the image file from the Images library.
    ////if a file with different file name extension is uploaded, the old file won't be overwritten,
    ////and will never be deleted from this page, so it must be deleted before adding a new one.
    if (this.pageImage != null && !string.IsNullOrEmpty(this.pageImage.ImageUrl))
    try
    currentWeb.AllowUnsafeUpdates = true;
    rootFolder.Files.Delete(this.pageImage.ImageUrl);
    rootFolder.Update();
    catch
    ////cannot delete specified file, this means file doesn't exist, the file must be deleted
    ////directly in the Images library by someone
    finally
    currentWeb.AllowUnsafeUpdates = false;
    try
    currentWeb.AllowUnsafeUpdates = true;
    SPFile imageFile = rootFolder.Files.Add(imageName, this.fileUpload.FileBytes, true);
    finally
    currentWeb.AllowUnsafeUpdates = false;
    // this.lblFileName.Text = currentWeb.Site.Url + imageList.RootFolder.ServerRelativeUrl + "/" + imageName;
    this.lblFileName.Text = currentWeb.Site.Url + imageList.RootFolder.ServerRelativeUrl + "/_w/" + imageName.Substring(0, imageName.LastIndexOf(".")) + "_" + imageName.Substring(imageName.IndexOf(".") + 1) + "." + imageName.Substring(imageName.IndexOf(".") + 1);
    // webimage = currentWeb.Site.Url + imageList.RootFolder.ServerRelativeUrl + "/_w/" + imageName.Substring(0,imageName.LastIndexOf("."))+"_"+imageName.Substring(imageName.IndexOf(".")+1) +"." + imageName.Substring(imageName.IndexOf(".")+1);
    this.imgPicture.ImageUrl = this.lblFileName.Text;
    this.btnClear.Visible = true;
    this.btnSave.Visible = false;
    #endregion
    This is how i used it in my page layout
     <Article:mycompnayRichImageField runat="server" ID="RichImageField1" InputFieldLabel="Keep image text short and precise" FieldName="PublishingPageImage" UpdateRollupImage="true"/>
    Aruna

    Hi,
    For this issue, I'm trying to involve someone familiar with this topic to further look at it.
    Thanks,
    Jason Guo
    TechNet Community Support

Maybe you are looking for