gpt4 book ai didi

java - 使用 HTML jQuery 和 Java 将 PDF 存储在 mySQL DB 中

转载 作者:行者123 更新时间:2023-11-29 16:40:42 24 4
gpt4 key购买 nike

我需要在 mySQL 数据库中存储一个 pdf(每个 pdf 最多 < 5 页)。该列被定义为mediumblob。测试 pdf 为 198 KB。我收到错误“addMedicalPlan 中发生错误:java.io.FileNotFoundException:”,然后是文件的转储“JVBERi0xLjcKCjQgMCBvYmoKKElkZW50aXR5KQplbmRvYmoKNS ......”,最后是“(文件名或扩展名太长)”。

我已经成功地用图像做到了这一点,并一直在尝试重新利用该代码来存储 pdf;通过研究 Stackoverflow 上的文章和其他问题。不幸的是,对我来说,大部分示例都与 PHP 相关。我已经能够使用以下代码阅读 pdf 并将其显示在页面中:

HTML:

<div class="form-group">
<embed width="191" height="207" id="image" src="" type="application/pdf">
<input class="form-control-file col-lg-12 col-md-12 col-sm-12 col-xs-12 photo-input" type="file" id="photo" name="photo" placeholder="PDF">
</div>

jQuery:

$(document).on('change', '.photo-input', function(){
//Check for a valid image extension
var img1 = this.files[0].type;
alert("img1: " + img1);
var mySubString = img1.substring(
img1.lastIndexOf("image") + 13
);
alert("mySubString: " + mySubString)
if($.inArray(mySubString, ['pdf']) == -1) {
alert('Add invalid extension 1!');
$('#image').attr('src', '');
}else{
//Check for a valid image size
if (this.files[0].size < 10000000){
readURL(this, this.id);
}else{
alert("This image is to large (must be < 1 MB).")
$('#image').attr('src', '');
}
var img1 = document.getElementById('image');
img2 = (img1.getAttribute('src')).replace(/^data:application\/(pdf);base64,/, "");
}
});

function readURL(input, id) {
if (input.files && input.files[0]) {
var reader = new FileReader();

reader.onload = function (e) {
$('#image').attr('src', e.target.result);
}

reader.readAsDataURL(input.files[0]);
}
}

然后我传递要使用ajax存储的pdf:

$.ajax({
type: "POST",
url: "MedicalPlanAddView",
cache: false,
data : {
ssAccountLevel : sessionStorage.getItem('ssAccountLevel'),
ssAccountID : sessionStorage.getItem('ssAccountID'),
ssNameID : sessionStorage.getItem('ssNameID'),

image : img2,
mpNameAdd: $("#mpNameAdd").val(),
},
})

服务器端java是:

private static byte[] getByteArrayFromFile(final String handledDocument) throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final InputStream in = new FileInputStream(handledDocument);
final byte[] buffer = new byte[500];
int read = -1;
while ((read = in.read(buffer)) > 0) {
baos.write(buffer, 0, read);
}
in.close();
return baos.toByteArray();
}

ps.setString(1, nameId);
ps.setString(2, medicalPlanName);
ByteArrayInputStream bais = new
ByteArrayInputStream(getByteArrayFromFile(medicalPlan)); //pdf image
ps.setBlob(3, bais);
ps.setString(4, updateDate);

ps.executeUpdate();

最佳答案

这就是我最终所做的。

HTML:

<div class="form-group">
<embed width="191" height="207" id="image" src="" type="application/pdf" class="img-thumbnail">
<input class="form-control-file col-lg-12 col-md-12 col-sm-12 col-xs-12 photo-input" type="file" id="photo" name="photo" placeholder="PDF">
</div>

jQuery:

$(document).on('change', '.photo-input', function(){
//Check for a valid image extension
var img1 = this.files[0].type;
var mySubString = img1.substring(
img1.lastIndexOf("image") + 13
);
if($.inArray(mySubString, ['pdf']) == -1) {
alert('invalid extension!');
$('#image').attr('src', 'data:application\/(pdf);base64');
}else{
//Check for a valid image size
if (this.files[0].size < 10000000){
readURL(this, this.id);
}else{
alert("This image is to large (must be < 1 MB).")
$('#image').attr('src', 'data:application\/(pdf);base64');
}
var img1 = document.getElementById('image');
img2 = (img1.getAttribute('src')).replace(/^data:application\/(pdf);base64,/, "");
}
});

function readURL(input, id) {
if (input.files && input.files[0]) {
var reader = new FileReader();

reader.onload = function (e) {
$('#image').attr('src', e.target.result);
}

reader.readAsDataURL(input.files[0]);
}
}

submitHandler : function(showMPAddForm) {
var img1 = document.getElementById('image');
img2 = (img1.getAttribute('src')).replace(/^data:application\/(pdf);base64,/, "");

$.ajax({
type: "POST",
url: "MedicalPlanAddView",
cache: false,
data : {
ssAccountLevel : sessionStorage.getItem('ssAccountLevel'),
ssAccountID : sessionStorage.getItem('ssAccountID'),
ssNameID : sessionStorage.getItem('ssNameID'),

image : img2,
mpNameAdd: $("#mpNameAdd").val(),
},
})
.fail (function(jqXHR, textStatus, errorThrown) {
//alert(jqXHR.responseText);
$('#ajaxGetUserServletResponse13').text('Error adding Medical Plan.');
})
.done(function(responseJson){
$('#ajaxGetUserServletResponse13').text('Medical Plan added.');
showActionPlanDataTable();
})
}

SQL:

                ps = c.prepareStatement(updateWithPhoto);
ps.setString(1, medicalPlanName);

BASE64Decoder decoder = new BASE64Decoder();
byte[] imageByte = decoder.decodeBuffer(medicalPlan);
ps.setBlob(2, new SerialBlob(imageByte));

ps.setString(3, updateDate);
ps.setString(4, medicalPlanId);

ps.executeUpdate();

关于java - 使用 HTML jQuery 和 Java 将 PDF 存储在 mySQL DB 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com