الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة فى استرجاع الصور من مجلد فى السيرفر

Featured Replies

بتاريخ:

السلام عليكم ي باش مهندسين

post-117887-0-55591200-1409252373_thumb.png (طريقة تخزين الصور على مجلد على السيرفر )

وهذا هو كود uplode وهو يعمل بصوره صحيحه ويقوم بوضع الصوره على المجلد المطلوب

بس المشكلة فى استرجاع الصوره باستخدام  servlet  ايضا الكود الى استخدمته موجود ادناه

 


package servlet;

import java.io.File;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import oracle.adf.model.BindingContext;
import oracle.adf.model.binding.DCBindingContainer;

import oracle.jbo.Row;

import org.apache.myfaces.trinidad.model.UploadedFile;

public class uplode {

    private UploadedFile file;

    public uplode() {
    }

    public String uploadAction() {
        // Add event code here...
        String imageFolder = "D:\\store\\";
        File myFiles = new File(imageFolder);

        String newImageFile =
            imageFolder + getCurrentEmp() + ".png"; // Image and Path

        try {

            InputStream inputStream = getFile().getInputStream();
            FileOutputStream outStream =
                new FileOutputStream(newImageFile); // haktob feh
            byte[] buffer = new byte[8192];
            int butesRead = 0;
            while ((butesRead = inputStream.read(buffer)) != -1) {
                outStream.write(buffer, 0,
                                butesRead); // 0 > men makan manta waef
            }
            outStream.flush();
            outStream.close();
            inputStream.close();
            getFile().dispose();
        }
        
      
/*       catch (Exception e)
      {

      }   */     
      catch(FileNotFoundException fnfe)
       {
       fnfe.printStackTrace();
       }
       catch(IOException ioe)
       {
       ioe.printStackTrace();
       }
        
        
        return null;
    }


    public String getCurrentEmp() {
        // Get Esm El mowazaf
        DCBindingContainer dcbc =
            (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
        Row row = dcbc.findIteratorBinding("ExpView1Iterator").getCurrentRow();
        String name = null;
        if (row != null) {
            name = (String)row.getAttribute("Sub");
        }
        return name;
    }


    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public UploadedFile getFile() {
        return file;
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////////

servlet code

 

package servlet;

import java.awt.image.BufferedImage;

import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.imageio.ImageIO;

import javax.servlet.*;
import javax.servlet.http.*;

public class Show extends HttpServlet {
    private static final String CONTENT_TYPE = "text/html; charset=UTF-8";

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response) throws ServletException,
                                                           IOException {
         response.setContentType("image/png");
         
        String imageName = request.getParameter("imName"); // nafs esm El Emp
        OutputStream output = response.getOutputStream();
        
        String image =  "D:\\store\\" + imageName + ".png";
        File imageFile = new File(image);

        BufferedImage input = ImageIO.read(imageFile);
        ImageIO.write(input, "PNG", output);

      try {
                 
                 output.flush();
                 output.close();
             }
      catch (IOException ioe) {
                 // TODO: Add catch code
                 ioe.printStackTrace();
             }
    }
}

calling servlet in source of imeage component

/show?imName=#{bindings.Sub.inputValue}

 

 

 

 


بس المشكلة انو الصوره مابتظهر على المتصفح lمرفق لكم الصوره

وكذلك بيطلع IO EXCEPTION AND CANNOT RED FILE فى الجافا دفولبر فى ال log

ارجو منكم المساعدة جزاكم الله خيرا وزادكم علما

 

بتاريخ:
  • كاتب الموضوع

شباب مافى حد واجهته هذه المشكلة من قبل .......

بتاريخ:

طيب بدل من انك تكتب كود سيرفلت علشان تقرا وهى اصلا موجودة فى مسار محدد

خلى خاصية source للكومبوننت af:image تساوى d:/store/#{bindings.sub.inputValue}.png

انا جربتها قبل كده على relative path حاول انت تجربها على absolute path

بتاريخ:
  • كاتب الموضوع

شكرا على المرور اخى الكريم بس الصفحة اشتغلت واتضح انو المشكلة فى الكوكيز فى البراوزر ويظهر ذلك الخطا فى log file  و عندما امسحها بتم تحميل الصوره فى الملف وعرضها على البراوزر لانه من الخطا برمجيا ان نجعل المستخدم يقوم بمسح الكويكز بنفسه بس ازاى احل هذه المشكلة ى باش مهندسين عاوز اقتراحاتكم جزاكم الله خيرا

بتاريخ:
  • كاتب الموضوع

ى مهندسن هذا هو الخطا الذى ينتج بعد رفع الصوره على المجلد ( ولايتم عرضها فى البراوزر)

 

<07/09/2014 AST 03:42:28 م> <Error> <HTTP> <BEA-101017> <[servletContext@19028937[app:palacesys module:palacesys-ViewController-context-root path:/palacesys-ViewController-context-root spec-version:2.5], request: weblogic.servlet.internal.ServletRequestImpl@2d5cef[
GET /palacesys-ViewController-context-root/show?imName=%D8%B9%D9%82%D8%AF HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1:7101/palacesys-ViewController-context-root/faces/exp.jsp?_adf.ctrl-state=dlb4xfmbg_4
Cookie: JSESSIONID=D1v5JMST8L29LVLpSGL18mtyd5dThn4RFHHwCt7XCTJQ0ZLsBQ81!-1018725435
Connection: keep-alive

]] Root cause of ServletException.
javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1275)
    at view.Show.doGet(Show.java:29)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    Truncated. see log file for complete stacktrace
>

 

وعندما اقوم بمسح الكويكز من البراوزر واعادة تشغيله من جديد يتم رفع الصوره على المجلد بنجاح وكذك عرض الصوره على البراوزر

فهل ي ترا توجد اعدادات معينة لابد ان اقوم بعملها ام كود اقوم بكتابته

ارجو منكم المساعدة ي اهل الخبرة وجزاكم الله خيرا وزادكم علما

بتاريخ:

تأكد من المسارات التي تقرأ منها

بتاريخ:
  • كاتب الموضوع

شكرا ى باش مهندس صطفى على مرورك بس حضرتك اذا كنت تقصد المجلد الذى اقوم بتخزين الصور فيه واسترجاع الصور منه فهو فى هذا المسار  "c:\\store\\" فى uplode methoed and servlet  كما موضح فى الكود المرفق فى المشاركه بس لم اعرف ما هى المشكلة بالتحديد ارجو المساعدة وجزاك الله خير

بتاريخ:

عادة نقوم بعمل debug لمعرفة مكان الخطأ بالضبط

بتاريخ:
  • كاتب الموضوع

شكرا لك ي باش مهندس مصطفى بس من عملية compile لايوجد اخطاء فى الكود بس بيظهر فى log بعد رفع اول صوره

 

Cookie: JSESSIONID=D1v5JMST8L29LVLpSGL18mtyd5dThn4RFHHwCt7XCTJQ0ZLsBQ81!-1018725435
Connection: keep-alive

بتاريخ:

هذا لا يبين سبب الخطأ.

جرب عمل debug

  • بعد 2 أسابيع...
بتاريخ:
  • كاتب الموضوع

شكرا ى باش مهندس على المرور بس لو مكن تورينى عمل debug لى java class  ولا الصفحه نفسها ز جزاك الله خير

  • بعد 2 أسابيع...
بتاريخ:

ضع break point في المكان الذي تريد التوقف عنده ثم شغل الملف من خلال debug ومن ثم يمكن التنقل باستخدام شريط الـ debug

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.