我使用dropwizard制作了一个非常传统的文件上传方法。
所以我在资源中有一个这样的方法
@POST
@Path("/uploadFile")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@UnitOfWork
public Response uploadFile(
@FormDataParam("file") final InputStream fileInputStream,
@FormDataParam("file") final FormDataContentDisposition contentDispositionHeader,
@Context HttpServletRequest request) throws IOException {...
里面没有什么特别的,它只是保存到一个路径,使用java.nio库,就像这样
java.nio.file.Path outputPath = FileSystems.getDefault()
.getPath(System.getProperty("user.home"), fileName);
if (!Files.exists(outputPath.getParent()))
Files.createDirectories(outputPath.getParent());
Files.copy(fileInputStream, outputPath);
它只是不会上传excel文件。我在其他地方读到excel文件和它们的底层类型受到怀疑。请问我需要做什么?
基本上,该方法适用于其他文件,但不能上传xls文件。我不知道确切的原因,但是我的怀疑都贴在问题里了。我让它工作的方法是替换简单的复制行
Files.copy(fileInputStream, outputPath);
与
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(new File(outputPath.toString()));
int read = 0;
byte[] bytes = new byte[1024];
while ((read = fileInputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.flush();
}
catch (IOException ioe) {
ioe.printStackTrace();
}
finally{
outputStream.close();
}
它通过将输入流读入字节数组,然后将其写入新的FileOutputStream来绕过(我怀疑这是一种安全功能)。
如果有人有比这更好的“正确的方法”,看到它会很酷。堆栈跟踪没有告诉我发生了什么。
问题内容: 经过一整天的研究和尝试,我终于放弃了 纯AJAX的 上传文件(ps:本文如何与JQuery异步上传文件?埋了我的最后希望) 我的问题可能没什么意义,但是我仍然想知道为什么ajax(或XMLHttpRequest)不能处理这个问题?为什么文件不能像真正的httprequest那样传输? 问题答案: 出于安全原因,JavaScript无法读取本地文件,因此我们无法使用AJAX发送数据。 但
我不知道这是与代码有关还是与服务器有关... 在一个PHP页面上,我调用了一个包含标准PHP上传过程的上传函数。在调用函数之后,我执行重定向(尝试使用window.location或header())。 奇怪的是,每件事都运行良好的几次,然后它就不会再上传了(uploadOK也不会是0)。它不会将文件移动到服务器上。 然后,我将取出重定向,上传将重新开始工作。我把重定向放回去,上传还能工作几次,然
问题内容: 关于此问题,有什么方法可以将[文件从ASP.NET应用程序直接上传到Amazon S3并具有进度条? -—编辑---- 两天后,仍然没有直接的运气。发现了一件看起来很有前途但又不是免费的东西:http : //www.flajaxian.com/ 使用Flash通过进度条直接上传到S3。 问题答案: 我也在寻找解决方案。也许这会有所帮助, 来自AWS Dev Commnity, 但在许
问题内容: 谁能解释我为什么不应该使用在窗口内直接绘制的方法,而应该在内部使用方法? 提前致谢。 问题答案: 三大原因… 顶层容器不是双缓冲的,在重新绘制框架时会导致闪烁,是的,您可以实现自己的双缓冲,但是… 在框架内绘画不会考虑框架边框,这意味着可以在框架边框下绘画。边框也取决于平台/外观,这意味着尺寸会发生变化 对于Swing窗口,窗口上已经存在一些组件,这意味着它们在大多数情况下都被覆盖(或
问题内容: 我看到许多人试图将Android设备直接连接到SQL Server或MySql这样的数据库中,答案始终是相同的:使用Web服务。为什么不直接将Android设备与数据库连接?我的Android应用程序使用的是本地网络。 问题答案: 有很多原因。 安全性-如果用户具有直接访问权限,则他们可以从您的数据库中获取任何信息。另外,他们将在您的数据库中输入密码。因此,如果您使用的SQL Serv