將文件轉成二進制以JSON格式調用服務接口保存至數據庫

使用場景

每個商戶信息不一樣,字段且不一樣,商戶信息統一用json格式保存至數據庫;商戶信息也可以文件內容,所以有了如下的實現。

實現步驟

文件內容轉成字符串

// 文件轉字符串
FileInputStream inputStream = new FileInputStream("E:\\dolphin\\pays\\apiclient_cert.p12");
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int len;
while ((len = inputStream.read()) != -1) {
    byteArrayOutputStream.write(len);
}
inputStream.close();
// 將內容存入數組中
byte[] fileData = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();

// 轉成String字符串
fileStr = new String(fileData, StandardCharsets.ISO_8859_1);

作爲字段存入JSON

@Test
public void addTest() {
    HttpMerchantIdentifyAddRequest request = new HttpMerchantIdentifyAddRequest();
    request.setAccountNo("testMerchantIndexCodePms");
    request.setPayType("weChatPay");
    request.setMerchantIdentyName("測試");
    request.setExtendInfo("string");
    Map<String, String> data = new HashMap<>();
    data.put("weChatAppId", "123");
    data.put("weChatMchId", "1222");
    data.put("weChatMchKey", "123354");
    data.put("certFileData", fileStr);
    request.setContent(JsonUtil.toJson(data));
    sendPost("http://10.19.132.178:8080/pays/api/merchantIdentify/add/V1", JsonUtil.toJson(request));
}

數據庫保存

將content字段類型設置爲文本型

create table tb_merchant_identify (
  id varchar(64) not null ,
  merchant_identify_name varchar(48) ,
  pay_type varchar(48) not null ,
  account_no varchar(64) not null ,
  content text ,
  create_time timestamp not null ,
  update_time timestamp not null ,
  extend varchar(48) ,
  constraint pk_tb_merchant_identify primary key (id)
);

文件取出使用

// 字符串轉文件
FileOutputStream outputStream = new FileOutputStream("E:\\dolphin\\pays\\temp.p12");
outputStream.write(fileStr.getBytes(StandardCharsets.ISO_8859_1));
outputStream.flush();
outputStream.close();

// 字符串直接轉成流,不要生成中間文件
InputStream inputStream = new ByteArrayInputStream(certFileData.getBytes(StandardCharsets.ISO_8859_1));

注意:編碼要用 StandardCharsets.ISO_8859_1 爲單字節編碼,用雙字節內容會被改變,導致文件內容不一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章