相关疑难解决方法(0)

如何通过浏览器确定上传文件的mime类型?

我有一个Web应用程序,用户需要上传.zip文件.在服务器端,我正在检查上传文件的mime类型,以确保它是application/x-zip-compressedapplication/zip.

在Firefox和IE上,这对我来说很好.然而,当一个同事测试它时,它在Firefox上失败了(发送mime类型就像是" application/octet-stream")但是在Internet Explorer上工作.我们的设置似乎是相同的:IE8,FF 3.5.1禁用所有附加组件,Win XP SP3,WinRAR安装为本机.zip文件处理程序(不确定是否相关).

所以我的问题是:浏览器如何确定要发送的mime类型?

请注意:我知道mime类型是由浏览器发送的,因此不可靠.我只是检查它是为了方便 - 主要是为了给出一个比你通过尝试打开非zip文件作为zip文件获得的更友好的错误消息,并避免加载(可能是沉重的)zip文件库.

browser forms webforms mime-types

79
推荐指数
4
解决办法
4万
查看次数

如何使用JSF 2.0下载存储在数据库中的文件

我需要下载存储在数据库中的文件.我想我做了正确的查询并调用它我只是不知道如何将它连接到JSF页面中的按钮.另外我想知道,在将它传递到JSF页面之前,我是否必须将该图像保存在服务器的文件夹中.如果是这样,我该怎么做?

这是我用来从db返回byte []的查询:

@NamedQuery(name = "downloadGarbage", query = "SELECT g.file FROM Garbage g WHERE g.id :idParam")
@Entity
public class Garbage implements Serializable {
@Lob
@Column(nullable = false)
private byte[] file;
....
Run Code Online (Sandbox Code Playgroud)

这是一个简单的EJB,它调用该查询然后获取id:

@Stateless(name = "ejbs/FileDownloaderEJB")
public class FileDownloaderEJB implements IFileDownloaderEJB {

@PersistenceContext
private EntityManager em;

public byte[] downloadGarbage(Long id) {
    Query query = em.createNamedQuery("downloadGarbage");
    query.setParameter("idParam", id);

    Object o = query.getSingleResult();
    byte[] tmpArray = (byte[]) o; 
    return tmpArray;
}
Run Code Online (Sandbox Code Playgroud)

现在这是困扰我的部分,我在JSF页面和托管bean上面怎么样?

@ManagedBean
@RequestScoped
public class DownloadController {

@EJB
private FileDownloaderEJB fileDownloaderEJB;

    ... …
Run Code Online (Sandbox Code Playgroud)

java jsf jpa download java-ee

6
推荐指数
1
解决办法
9311
查看次数

检测用户是否更改了要上传的文件扩展名?

使用Java servlet,是否可以检测文件的真实文件类型,无论其扩展名如何?

场景:您只允许纯文本文件上传(.txt和.csv)用户获取文件mypicture.jpg,将其重命名为mypicture.txt并继续上传文件.你的servlet只需要文本文件,并试图读取jpg.

显然这是用户错误,但有没有办法检测到它不是纯文本而不是继续?

java servlets file-upload mime-types

1
推荐指数
1
解决办法
1642
查看次数

标签 统计

java ×2

mime-types ×2

browser ×1

download ×1

file-upload ×1

forms ×1

java-ee ×1

jpa ×1

jsf ×1

servlets ×1

webforms ×1