storage 이클립스 - "로컬 리소스를로드 할 수 없습니다:file:/// C:...jpg"Java EE Tomcat




추가 안될 (8)

이 오류는 파일 시스템에서 데이터를 직접로드 할 수 없다는 것을 의미합니다. 유일한 해결책은로드 파일을 제공하는 웹 서비스를 만드는 것입니다.

좋은 저장 후 파일 시스템에서 그림을 가져 오려고합니다 (데이터베이스에 넣는 대신 디스크에 복사하고 db에 경로 넣기).

  1. 나는 그림을 c : \ images \ folder에 저장하고 전체 경로가 c : \ images \ mypic.jpg 인 것으로 가정했다.
  2. 내가 그것을 검색하려고하면 일부 자바 코드를 사용하여 img src 속성을 <img src="c:\images\mypic.jps"> 로 설정합니다.
  3. 브라우저 콘솔에서이 오류를 발견했습니다 Not allowed to load local resource: file:///C://images//mypic.jpg

질문 : 이러한 경로 문제를 해결하는 방법은 무엇입니까? 사진을 어디에 보관해야합니까? 어디에서 가져와야합니까?


이 응용 프로그램을 로컬로 실행하고 보안에 문제가없는 경우 간단한 expressjs 솔루션이 있습니다.

server.js 또는 app.js 파일에 다음을 추가하십시오.

app.use('/local-files', express.static('/'));

/local-files 아래에 전체 루트 디렉토리를 제공합니다. 말할 필요도없이 로컬 컴퓨터가 아닌 다른 곳에이 응용 프로그램을 배포 할 계획이라면 이것은 매우 나쁜 생각입니다.

이제 간단하게 할 수 있습니다.

<img src="/local-files/images/mypic.jps"/> 

참고 : 저는 macOS를 실행하고 있습니다. Windows를 사용하는 경우 경로 문자열에서 'C : \'를 검색하여 제거해야 할 수 있습니다.


http 위치와 디스크 위치 개념이 다릅니다. 당신이해야 할 일은 다음과 같습니다.

  1. 업로드 된 파일 summer.jpg
  2. 알려진 위치 (응용 프로그램 위치) 아래에서 디스크로 이동합니다 (예 : c:\images\summer.jpg
  3. text로 이미지를 나타내는 db 레코드에 삽입하기 summer.jpg
  4. 그것을 표시하려면 일반 <img src="images/summer.jpg" />
  5. 응용 프로그램 /images 아래에 c:\images\ 제공 할 무언가 (예 : 아파치)가 필요합니다. 2 단계에서이 작업을 수행 할 수 없다면 웹 루트 아래에 c:\my-applications\demo-app\build\images 저장해야합니다 c:\my-applications\demo-app\build\images

두 가지 대안이 있습니다.

첫 번째는 서블릿 내부에서 이미지를 처리하는 데 사용할 이미지의 식별자 (이미지 또는 해시 경로)를 매개 변수로 사용하여로드 된 응답 스트림에 인쇄하는 ServletImageLoader를 만드는 것입니다. 이미지를 서버에서 가져옵니다.

두 번째는 응용 프로그램의 ROOT 폴더 안에 폴더를 만들고 이미지에 대한 상대 경로 만 저장하는 것입니다.


ABSOLUTE PATH를 사용하여 이미지 이름을 참조하지 마십시오. 예 : C:/xamp/www/Archivos/images/templatemo_image_02_opt_20160401-1244.jpg . 웹 서버 내의 해당 위치에 대한 참조를 사용해야합니다. 예를 들어 프로세스가 실행중인 위치에 따라 ../../Archivos/images/templatemo_image_02_opt_20160401-1244.jpg 를 사용합니다.


크롬에서는 런타임 플래그로이 기능을 허용 할 수 있습니다. - 파일로부터의 파일 접근 가능

그러나 런타임 플래그 --disable-web-security를 ​​전달하지 않으면 Chrome의 현재 버전 (37, 38)에 문제가있는 것 같습니다.

이는 단기적인 해결 방법을 제외하고 용납 할 수없는 해결책이지만 https://code.google.com/p/chromium/issues/detail?id=379206 문제로 확인되었습니다.


보내는 태그 <img src="c:\images\mypic.jpg"> 는 사용자 브라우저가 파일 시스템의 이미지에 액세스하게합니다. c:\images 에있는 폴더에 이미지를 저장해야한다면 images.jsp와 같은 서블릿을 만들 것을 제안합니다. 매개 변수가 파일의 이름을 사용하면 서블릿 응답 내용을 image / jpg에 설정 한 다음 바이트를로드합니다. 서버 위치에서 이미지를 가져 와서 응답으로 보냅니다.

하지만 애플리케이션을 만드는 데 사용하는 것은 무엇입니까? 순수 서블릿인가요? 봄? JSF?

Here 대한 정보와 방법에 대한 정보를 찾을 수 있습니다.


입력 및 출력 스트림을 사용한 파일 읽기 및 쓰기 :

//Coded By Anurag Goel
//Reading And Writing Files
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


public class WriteAFile {
    public static void main(String args[]) {
        try {
            byte array [] = {'1','a','2','b','5'};
            OutputStream os = new FileOutputStream("test.txt");
            for(int x=0; x < array.length ; x++) {
                os.write( array[x] ); // Writes the bytes
            }
            os.close();

            InputStream is = new FileInputStream("test.txt");
            int size = is.available();

            for(int i=0; i< size; i++) {
                System.out.print((char)is.read() + " ");
            }
            is.close();
        } catch(IOException e) {
            System.out.print("Exception");
        }
    }
}




java tomcat storage