gpt4 book ai didi

java - 将带有 Java servlet 的文件上传到 Google App Engine

转载 作者:行者123 更新时间:2023-12-04 07:01:17 26 4
gpt4 key购买 nike

我希望能够让用户将简短的音频样本上传到我的 App Engine 应用程序并将它们存储在提供的数据存储中。我正在使用 Java servlet 版本。

我的问题是使用多部分表单上传文件。使用正常 request.getParameter()方法返回带有多部分表单的 null。我已经阅读了关于使用 oriely MultiPartForm 类的信息,但这似乎涉及将文件保存到服务器文件系统,这是不可能的。

有人可以告诉我如何上传文件以使其最终出现在 App Engine 数据库 Blob 对象中吗?

最佳答案

你可以这样做:示例

<input id="file-pdf" type="file" name="file-pdf"> 
<button id="submit-pdf">submit</button>

javascripts
$("#submit-pdf").click(function() {
var inputFileImage = document.getElementById("file-pdf");
var file = inputFileImage.files[0];
var data = new FormData();
data.append("file-pdf",file);
$.ajax({
url: "uploadpdf",
type: 'POST',
cache : false,
data : data,
processData : false,
contentType : false,
dataType: "json",
success: function (response) {
if(response.success){
console.log("ok");
}else{
console.log("fail");
}

}
});
});

和小服务程序
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
JSONObject finalJson = new JSONObject();
Boolean success = false;
String ajaxUpdateResult = "";
try {
ServletFileUpload upload = new ServletFileUpload();
FileItemIterator iterator = upload.getItemIterator(req);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (item.isFormField()) {
logger.warning("Got a form field: " + item.getFieldName()+ "value="+ item.getName());
String idForm= item.getFieldName();
} else {
logger.warning("Got an uploaded file: " + item.getFieldName() +
", name = " + item.getName()+ " content="+item.getContentType() + " header="+item.getHeaders());
// here save
//success = insertFile(String title,String mimeType, String filename, InputStream stream);

}
}
} catch (Exception ex) {

}

finalJson.put("success", success);
resp.setCharacterEncoding("utf8");
resp.setContentType("application/json");
PrintWriter out = resp.getWriter();
out.print(finalJson);
}

关于java - 将带有 Java servlet 的文件上传到 Google App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1797697/

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