Blob 转 OutputStream

StreamingOutput.java

импорт java.io.IOException;
импорт java.io.OutputStream; 

импорт javax.ws.rs.WebApplicationException; 

/ ** 
 * Тип , который может быть использован в качестве возвращаемого значения методы ресурса или в качестве объекта 
 * в { @link Response} , когда приложение Желающие потока на выходе. 
 * Это легкий альтернатива 
 * { @link javax.ws.rs.ext.MessageBodyWriter}. 
 * 
 * @Author Paul Sandoz 
 * @author Марк Хэдли 
 * @see javax.ws.rs.ext.MessageBodyWriter 
 * @see javax.ws.rs.core.Response 
 *@since 1,0
  * / 
публичный  интерфейс StreamingOutput { 

    / ** 
     * Вызывается , чтобы написать тело сообщения. 
     * 
     * @Param выводить OutputStream для записи. 
     * @Throws java.io.IOException если обнаружена ошибка IO 
     * @throws javax.ws.rs.WebApplicationException 
     * если конкретный 
     * ошибочный ответ HTTP должен быть произведен. Действует только если брошено до 
     * на любые байты записываются в выходной. 
     * / 
    Недействительные записи (выход OutputStream) бросаетIOException, WebApplicationException; 
}

процесс преобразования

// по информации пациента запрос Фото ID 
@Override
 общественного StreamingOutput getPatientPhotoByPatientId (String patientId) {
     // получить информацию о пациенте внутри фотографий и информации по отпечаткам пальцев содержащегося типа сгустка 
    PatInfoNote patInfoNote = strictFindByPrimaryKey (PatInfoNote. Класс , patientId, «неопределенный найти информацию о пациенте patientId " );
     IF (patInfoNote.getPatientPhotograph () == NULL ) {
         вбрасывание  новый новый NotFoundException (string.Format (" информация о снимке пациента существует patientId [% S] " , patientId)); 
    } 
    streamingOutput streamingOutput = нуль ;
     попробовать {
         / / процесс преобразования 
        streamingOutput =StringUtils.getStreamingOutputByBlob (patInfoNote.getPatientPhotograph ()); 
    } Задвижка (SystemException е) {
         бросить  новый SystemException ( "读取患者照片失败" ); 
    } 
    Вернуть streamingOutput; 
} 
// ------- 
общественности  статический StreamingOutput getStreamingOutput ( окончательный InputStream в) броски IOException { 
    StreamingOutput поток = новый StreamingOutput () {
         общественного  недействительными записи (OutputStream уходит) бросает IOException, WebApplicationException {
             попробовать{
                 Int чтения = ложь ;
                байт [] байт = новый  байт [1024 ]; 

                INT readx;
                в то время как ((readx = in.read (байт)) = -1! ) { 
                    out.write (байт, 0 , readx); 
                } 

            } Улов (Исключение var4) {
                 бросить  новый IOException ( "文件流读取失败:" + var4.getMessage (), var4); 
            } 
        } 
    }; 
    возврат потока; 
} 

Общественности  статическойStreamingOutput getStreamingOutputByBlob (Blob блоб) бросает RuntimeException { 
    StreamingOutput streamingOutput = NULL ; 

    попробуйте { 
        streamingOutput = getStreamingOutput (blob.getBinaryStream ());
        вернуться streamingOutput; 
    } Задвижка (Исключение var3) {
         бросить  новый RuntimeException ( "读取数据流失败" , var3); 
    } 
}

 

рекомендация

отwww.cnblogs.com/ms-grf/p/10938950.html