я храню изображения на Linux EXTREME VPS, используя java
когда я сохраняю его на пути к серверу, я получаю
/var/sentora/hostdata/campusguru/public_html/resources/images/bharath.png
чтение пути, используя следующий код
if (imagePath != null && imagePath.length() > 0 )
{
byte fileContent[] = new byte[3000];
try (FileInputStream fin = new FileInputStream(new File(imagePath))) { //here the exception
while(fin.read(fileContent) >= 0) {
// Base64.encodeBase64(fileContent);
}
}
imagePath = imagePath.replace("\\", "/");
byte[] imageInByte;
BufferedImage originalImage = ImageIO.read(new File(imagePath));
// convert BufferedImage to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "png", baos);
baos.flush();
imageInByte = baos.toByteArray();
baos.close();
encodedFile = Base64.getEncoder().encodeToString(imageInByte);
}
stuAdmissionDetails.setStuImg(encodedFile);
}
когда я читаю, используя приведенный выше код, я получаю следующее исключение
java.io.FileNotFoundException: \var\sentora\hostdata\campusguru/public_html\resources\images\bharath.png (The system cannot find the path specified)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at com.rasvek.cms.controller.StudentController.getStudentAdmissionByAdmissionId(StudentController.java:696)
at com.rasvek.cms.controller.StudentController$$FastClassBySpringCGLIB$$cb2af793.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:52)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
at com.rasvek.cms.controller.StudentController$$EnhancerBySpringCGLIB$$bbc517cf.getStudentAdmissionByAdmissionId(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Как решить эту проблему?
есть ли другой способ прочитать файл с сервера Linux?




Думаю, проблема в том, что вы используете неправильный путь к файлу.
Вы говорите, что читаете файлы на сервере Linux, и кажется, что вы пытаетесь прочитать их на машине Windows. Из этого я делаю вывод, что вы установили файловый сервер Linux на свой компьютер с Windows как общий файловый ресурс SMB ... или что-то в этом роде 1.
Однако ... путь, который вы используете выглядит, как путь к файлу Linux:
/.Но если у вас удаленно смонтирована файловая система Linux, путь к файлу, который вы должны использовать, это путь к файлу, который вы будете использовать из командной строки Windows. Вероятно, начиная с буквы диска.
(Я не могу сказать вам, что это должно быть. Это зависит от того, как вы смонтировали файловую систему, и как удаленный файловый сервер экспорт файловое дерево.)
1 - On the other hand, you may just be using some code you found on the internet which could be completely inappropriate to the task you are trying to do.
OP дублирует сообщение: stackoverflow.com/questions/51335151/…
Могут быть и другие способы, но это зависит от того, какие протоколы доступны для доступа к удаленной файловой системе. И вы ничего не упомянули об этом в своем вопросе.
Я заметил, что «Linux Extreme VPS» на самом деле является размещенным сервером от коммерческого провайдера. Таким образом, вы могли установить / настроить любое количество различных служб для представления ваших данных, включая HTTP / HTTPS, FTP, SFTP, FTPS, SMB, NFS ... и многие другие. Для каждого потребуется свой способ доступа к данным.
Я хотел спросить, есть ли отдельный способ чтения файла с сервера Linux с использованием Java?