#codenameone
#кодовое имя
Вопрос:
Я пытаюсь выполнить многоступенчатую загрузку с некоторыми двоичными данными. Однако я получаю очень странную ошибку, с которой я никогда не сталкивался. Вот мой код
MultipartRequest request = new MultipartRequest();
request.setPost(true);
request.setUrl(URL "/agenci/worker/addWorker/");
..,
request.addData("photoFile", dir "user.jpg", "image/jpeg");
Я получаю это исключение во время выполнения
[EDT] 0:0:0,1 - Exception: java.lang.NullPointerException - null
at com.codename1.io.MultipartRequest.calculateContentLength(MultipartRequest.java:295)
at com.codename1.io.MultipartRequest.initConnection(MultipartRequest.java:128)
at com.codename1.io.ConnectionRequest.performOperationComplete(ConnectionRequest.java:798)
at com.codename1.io.NetworkManager$NetworkThread.run(NetworkManager.java:340)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
user.jpg присутствует в указанном пути. Это новая ошибка?
[ПРАВИТЬ]
Я думаю, что путь к файлу продолжает возвращать значение null, даже если файл присутствует в хранилище файловой системы. Это исключение, когда я пытаюсь создать изображение для загрузки из входного потока
[EDT] 0:0:0,1 - Exception: java.lang.NullPointerException - null
at com.codename1.io.Storage.createInputStream(Storage.java:172)
at com.jajitech.agenci.webservice.SignUpService.saveWorker(SignUpService.java:49)
at com.jajitech.agenci.login.signup.SignUp.completeSignUp(SignUp.java:333)
at com.jajitech.agenci.login.signup.SignUp.lambda$completeSignUpForm$3(SignUp.java:304)
at com.codename1.ui.util.EventDispatcher.fireActionSync(EventDispatcher.java:459)
at com.codename1.ui.util.EventDispatcher.fireActionEvent(EventDispatcher.java:362)
at com.codename1.ui.Button.fireActionEvent(Button.java:687)
at com.codename1.ui.Button.released(Button.java:728)
at com.codename1.ui.Button.pointerReleased(Button.java:835)
at com.codename1.ui.LeadUtil.pointerReleased(LeadUtil.java:153)
at com.codename1.ui.Form.pointerReleased(Form.java:3694)
at com.codename1.ui.Component.pointerReleased(Component.java:4691)
at com.codename1.ui.Display.handleEvent(Display.java:2352)
at com.codename1.ui.Display.edtLoopImpl(Display.java:1244)
at com.codename1.ui.Display.mainEDTLoop(Display.java:1162)
at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Пожалуйста, что может быть не так, что мои вызовы существующего файла в FileSystemStorage возвращают null
[ПРАВИТЬ 2]
Вот мой полный метод, использующий InputStream. Я пытался использовать обычный путь с той же ошибкой. Строка в createInputStream возвращает значение null.
try {
MultipartRequest request = new MultipartRequest();
request.setPost(true);
request.setUrl(URL "/agenci/worker/addWorker/");
request.addArgument("name", getName());
request.addArgument("dob", getDob());
request.addArgument("address", getAddress());
request.addArgument("email", getEmail());
request.addArgument("phone", getPhone());
request.addArgument("agencyId", getPass());
request.addArgument("gender", getGender());
try
{
InputStream is = Storage.getInstance().createInputStream(dir "a.jpg");
Image img = Image.createImage(is);
EncodedImage em = EncodedImage.createFromImage(img, true);
byte[] data = em.getImageData();
is.close();
request.addData("photoFile", data , "image/jpeg");
}catch(Exception er){System.out.println("error3");er.printStackTrace();}
NetworkManager.getInstance().addToQueueAndWait(request);
if(request.getResponseData() == null)
{
return "error1";
}
Исключение
Exception: java.lang.NullPointerException - null
at com.codename1.io.Storage.createInputStream(Storage.java:172)
Комментарии:
1. Это все? Эта строка завершается ошибкой для нулевого типа mime. Итак, я предполагаю, что был добавлен другой файл?
2. Возможно, я выяснил основную причину после нескольких часов попыток. Путь к файлу в хранилище файловой системы возвращает значение null, даже если файл существует.
3. Какая строка кода возвращает значение null?
4. Я отредактировал код Shai. Это строка, в которой создается InpuStream. Я на 100 процентов уверен, что файл присутствует в хранилище файловой системы
5. Вы используете
Storage
вместоFileSystemStorage