我正在使用 Java servlet 和 JSP 创建一个 Web 应用程序,我想在 JSP 中创建一个上传表单,以便我的客户能够上传和下载内容。我正在使用 Cloud Storage 和我的默认存储桶来上传内容。我遵循了谷歌关于读写谷歌云存储的教程。
这是我的 Servlet:
public class Create extends HttpServlet {
public static final boolean SERVE_USING_BLOBSTORE_API = false;
private final GcsService gcsService = GcsServiceFactory.createGcsService(new RetryParams.Builder()
.initialRetryDelayMillis(10)
.retryMaxAttempts(10)
.totalRetryPeriodMillis(15000)
.build());
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
GcsFilename fileName = getFileName(req);
if (SERVE_USING_BLOBSTORE_API) {
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobKey blobKey = blobstoreService.createGsBlobKey(
"/gs/" + fileName.getBucketName() + "/" + fileName.getObjectName());
blobstoreService.serve(blobKey, resp);
} else {
GcsInputChannel readChannel = gcsService.openPrefetchingReadChannel(fileName, 0, BUFFER_SIZE);
copy(Channels.newInputStream(readChannel), resp.getOutputStream());
}
}
我可以成功上传和下载,但只能是文本,而不是图像、pdf 等真实文件,这是我的问题。本教程用于阅读和编写文本,但我想上传真实文件。正如您从我的 jsp 中看到的,enctype 是"text/plain":
<form action="/index.html" enctype="text/plain" method="get" name="putFile" id="putFile">
<div>
Bucket: <input type="text" name="bucket" />
File Name: <input type="text" name="fileName" />
<br /> File Contents: <br />
<textarea name="content" id="content" rows="3" cols="60"></textarea>
<br />
<input type="submit" onclick='uploadFile(this)' value="Upload Content" />
</div>
</form>
我试图将其更改为“multipart/form-data”并放置一个
<input name="content" id="content" type="file">
但这不会上传真实文件,只会上传文件的假路径。我想知道如何上传真实文件,任何帮助将不胜感激。
潇潇雨雨
偶然的你
相关分类