Загрузка прикрепленного файла Corda - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь добавить загрузочный файл в мое приложение Corda, но оно не работает, так как я получаю ошибку ниже при самом запуске.

[[FATAL] Источник параметра не найден для параметра типа public javax.ws.rs.core.Response com.test.agreementnegotiation.api.AgreementNegotiationApi.uploadFile (java.lang.String, java.io.InputStream, org.glassfish.jersey.media.multipart.FormDataContentDisposition) по индексу 0 .; источник = 'ResourceMethod {HTTPMethod = POST, потребляемые типы = [составные части / данные формы], произведенные типы = [], приостановлено = false, suspendTimeout = 0, suspendTimeoutUnit = MILLISECONDS, = Invocable возможности ссылаться {Обработчик = ClassBasedMethodHandler {handlerClass = класс com.test.agreementnegotiation.api.AgreementNegotiationApi, handlerConstructors = [org.glassfish.jersey.server.model.HandlerConstructor@14ab26a]}, definitionMethod = public javax.ws.rs.core.Response com.test.agreementnegotiation.api.AgreementNegotiationApi.uploadFile (java.lang.String, java.io.InputStream, org.glassfish.jersey.media.multipart.FormDataContentDisposition), параметры = [параметр [тип = класс java.lang.String, источник = теги, defaultValue =], параметр [тип = класс java.io.InputStream, источник = файл, defaultValue = ноль], параметр [тип = класс org.glassfish.jersey.media.multipart.FormDataContentDisposition, source = file, defaultValue = null]], responseType = class javax.ws.rs.core.Response}, nameBindings = []} ']

Ниже приведен код -

@Path("upload")
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(@DefaultValue("") @FormDataParam("tags") String tags,
                               @FormDataParam("file") InputStream file,
                               @FormDataParam("file") FormDataContentDisposition fileDisposition) {

        String fileName = fileDisposition.getFileName();
        saveFile(file, fileName);
        String fileDetails = "File saved at " + UPLOAD_FOLDER + " " + fileName + " with tags "+ tags;
        System.out.println(fileDetails);
        return Response.ok(fileDetails).build(); 
    }

    private void saveFile(InputStream file, String name) {
        try {
            /* Change directory path */
            java.nio.file.Path path = FileSystems.getDefault().getPath(UPLOAD_FOLDER + name);
            /* Save InputStream as file */
            Files.copy(file, path);
        } catch (IOException ie) {
            ie.printStackTrace();
        }
    }

Я искал по ошибке и обнаружил, что нам нужно включить / пересмотреть MultiPartFeature.

https://www.google.co.uk/search?q=No+injection+source+found+for+a+parameter+site:stackoverflow.com&sa=X&ved=0ahUKEwjn5ePy5PbbAhWMOxQKHQHXAUkQrQIIUCgEMAI&biw=1280&bih=958

Какую бы ссылку я не нашел, они говорят об изменении web.xml или добавлении AppCong, и я не уверен, как это можно сделать в примере проекта Corda.

Команда Corda, пожалуйста, помогите.

1 Ответ

0 голосов
/ 29 июня 2018

Встроенный веб-сервер узла имеет конечную точку по умолчанию для загрузки вложений, /upload/*. Эта конечная точка доступна из коробки и не требует добавления в ваш API. Вы загружаете вложение, отправляя POST-запрос к этой конечной точке с типом кодировки multipart/form-data.

Например:

<form action="/upload/attachment" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="jar" class="form-control">
    </div>
    <br>
    <button type="submit" class="btn btn-default">Upload blacklist</button>
</form>

Вы не можете предоставить свои собственные дополнительные конечные точки для загрузки вложений.

Если вы напишите свой собственный веб-сервер узла (например, Spring webserver ), тогда нет никаких ограничений.

...