Я создал API с Джерси, этот API получает файл от клиента и передает его в другой API (не локальный API, но это не имеет значения). Интересно, можно ли передавать полученные данные напрямую вВторой API, не пропуская конец первой части, чтобы перенести файл в удаленный API.Я уже делал такие вещи в питоне с флягой.Не совсем то же самое, запись потока ввода непосредственно в файл.Но я не нашел такого рода вещей в java с Джерси, кроме того, напрямую отправляю в API
Преимущество этого: - сокращение времени на выполнение (и блокирование времени для клиента) - сокращение необходимых ресурсов наСервер API (без временного файла)
Если у вас есть пример серверного кода для этого (и кода клиента, если это возможно)
Я пробовал использовать метод потребителей MediaType.APPLICATION_OCTET_STREAM и объект InputStreamв Яве.Но это не сработало так, как я (возможно, я использовал не так, как нужно)
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@QueryParam("path") String path) throws IOException
{
Common.writeToHdfsFile(uploadedInputStream, uploadedFileLocation);
String output = "File uploaded to : " + uploadedFileLocation;
return Response.status(200).entity(output).build();
}
@app.route('/upload', methods=['POST'])
def hello():
app.logger.info('new request')
def custom_stream_factory(total_content_length, filename, content_type, content_length=None):
tmpfile = tempfile.NamedTemporaryFile('wb+', prefix='flaskapp')
print("start receiving file ... filename => " + str(tmpfile.name))
return tmpfile
stream, form, files = werkzeug.formparser.parse_form_data(flask.request.environ,
stream_factory=custom_stream_factory)
print(files.values)
total_size = 0
for fil in files.values():
print(
" ".join(["saved form name", fil.name, "submitted as", fil.filename, "to temporary file", fil.stream.name]))
total_size += os.path.getsize(fil.stream.name)
process = psutil.Process(os.getpid())
return "Hello World!"
Если бы мы могли сделать это на Java, это было бы идеально, но я также могу получить некоторый опыт работы с Pythonбыло бы неплохо и для некоторых примеров.