如何使用JSP/Servlet将文件上传到服务器?我试过这个:
<form action="upload" method="post">
<input type="text" name="description" />
<input type="file" name="file" />
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
但是,我只获取文件名,而不是文件内容.当我添加 enctype="multipart/form-data"到<form>,然后request.getParameter()返回null.
在研究期间,我偶然发现了Apache Common FileUpload.我试过这个:
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request); // This line is where it died.
Run Code Online (Sandbox Code Playgroud)
不幸的是,servlet抛出了一个没有明确消息和原因的异常.这是堆栈跟踪:
SEVERE: Servlet.service() for servlet UploadServlet threw exception
javax.servlet.ServletException: Servlet execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:313)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at …Run Code Online (Sandbox Code Playgroud) 如何在选择文件时获取文件的完整路径 <input type=‘file’>
<input type="file" id="fileUpload">
<script type="text/javascript">
function getFilePath(){
$('input[type=file]').change(function () {
var filePath=$('#fileUpload').val();
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
但filePath var包含only name所选文件,而不是full path.
我在网上搜索过,但出于安全考虑,似乎浏览器(FF,chrome)只是给出文件名.
有没有其他方法来获取所选文件的完整路径?
可能重复:
使用jQuery从文件输入的完整路径
我有以下html元素
<input type="file" id="upload">
Run Code Online (Sandbox Code Playgroud)
如果我使用
$("#upload").val();
Run Code Online (Sandbox Code Playgroud)
我只是文件名,而不是文件的完整绝对路径.谁能告诉我如何获得完整的路径?
我希望能够在我的JSF2.2 Web应用程序中上传文件,所以我开始使用新<h:inputFile>组件.
我唯一的问题是,如何指定文件将保存在服务器中的位置?我想把它们当成java.io.File实例.这必须在支持bean中实现,但我不清楚如何理解.
**更新:**大家好,我几乎已经解决了这个问题,请看Jquery表单没有提交到IE7和IE8我只需要排序ot ie7和ie8,
我一直在使用这个插件上传文件作为电子邮件附件,我已经到了它实际工作的地步,唯一的问题是它目前使用它来提交:
jQuery.ajax({
beforeSend: function() {
status.empty();
var percentVal = '0%';
bar.css("width", percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.css("width", percentVal)
percent.html(percentVal);
//console.log(percentVal, position, total);
},
complete: function(xhr) {
status.html(xhr.responseText);
}
});
Run Code Online (Sandbox Code Playgroud)
我需要将其添加到表单中,使用此提交:
jQuery.ajax({
type: "POST",
url: "mail.php",
dataType: "json",
data: {parameters: jsonData}
});
Run Code Online (Sandbox Code Playgroud)
我如何使用我的提交形式使插件工作?
这是当前工作上传表单的JSFIDDLE.
然后我需要将工作与JSFIDDLE结合起来(我已将其缩短为仅上传字段,但还有一堆其他信息)
这里也是php发送功能:
<?php
function printMember($member) {
foreach($member as $key=>$value) {
//Fill the aux string first
$str.= "$key …Run Code Online (Sandbox Code Playgroud) 我之前看到,出于安全原因,无法使用javascript设置表单文件输入字段值.
我只想将一个FILE输入复制到另一个表单并发布,我搜索了一个工作,找不到任何东西,是否可能?
更新:我的代码:
function prepareUpload( filevalue ){
document.getElementById('logo').value =filevalue;
var mform = document.getElementById('sleeker');
ajaxUpload( mform,'<?php echo base_url(); ?>'); // a methods to upload...
}
<input class="input-file-upload" type="file" size="20" name="logodummy" id="logodummy" onchange="prepareUpload( this.value );" />
<form action="" method="post" name="sleeker" id="sleeker" enctype="multipart/form-data" onbeforesubmit="return false;">
<p><input type="hidden" name="logo" id="logo" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)
其他任何文件输入工作正常,我可以收到$ _POST,但$ _FILES没有值.而且这个代码也很好.我觉得这个系数够了吗?
我必须使用JavaScript创建表单,用户将上传JPG文件并提交其他信息,如姓名,电子邮件等.当用户单击提交时,表单中的所有信息都将加载到值对象.对于我设置的图像文件byte[].
所以假设:
public String name;
public String email;
public byte[] logo;
Run Code Online (Sandbox Code Playgroud)
我也设置了一个servlet来处理提交,但我不知道如何开始.上传如何工作?用户提交时,如何获取图像信息?这是一个截图:http://imageshack.us/f/32/77675354.png/我需要转换该图像并将其保存为byte[]然后转换为blob,以便我可以将其插入表中.
我有以下HTML表单:
<form enctype="multipart/form-data" method="post" action="/myservlet">
<input type="file" name="mptest">
<br />
<input type="submit" value="upload">
</form>
Run Code Online (Sandbox Code Playgroud)
我根据这个答案创建了以下servlet :
package com.functions;
import java.io.*;
// import java.sql.Connection;
// import java.sql.PreparedStatement;
// import java.sql.ResultSet;
// import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
// import com.functions.utility.DBConnector;
public class restore extends HttpServlet {
private static final long serialVersionUID = 8097085789553030042L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("--------------------");
System.out.println(" On restore.java ");
System.out.println("--------------------");
try {
fetchDataFromDB(request, response); …Run Code Online (Sandbox Code Playgroud) 我定制了我的输入类型="文件",就像Facebook上传而不是文本框和一个按钮(默认输入类型="文件")我只输入一个按钮,没有文本框,你可以看到文件的路径.我打算在我的自定义输入文件旁边添加一个span或ap标签来显示文件的路径.
选择文件时,如何将文件路径打印到span标记?
HTML代码
<!doctype>
<html>
<head>
</head>
<body>
<div class="browse-wrap">
<div class="title">Choose a file to upload</div>
<input type="file" name="upload" class="upload" title="Choose a file to upload">
</div>
<span class="upload-path"></span>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
css代码
div.browse-wrap {
top:0;
left:0;
margin:20px;
cursor:pointer;
overflow:hidden;
padding:20px 60px;
text-align:center;
position:relative;
background-color:#f6f7f8;
border:solid 1px #d2d2d7;}
div.title {
color:#3b5998;
font-size:14px;
font-weight:bold;
font-family:tahoma, arial, sans-serif;}
input.upload {
right:0;
margin:0;
bottom:0;
padding:0;
opacity:0;
height:300px;
outline:none;
cursor:inherit;
position:absolute;
font-size:1000px !important;}
span.upload-path {
margin:20px;
display:block;}
Run Code Online (Sandbox Code Playgroud)
谢谢!
好吧,我真的不知道如何总结标题.我需要创建一个用户可以指定现有文件的表单,但我不需要上传它(它位于已经可访问的共享服务器上) - 我只需要获取文件名并将其保存在数据库中,这样就可以了与其他数据相关联.
我想到了输入标签,因为它为用户的文件系统提供了一个方便的已经完成的界面,但我不知道是否可以在没有实际上传的情况下使用它(遗漏enctype="multipart/form-data"似乎不起作用).我可以调整它以使其工作,或者除了编写自定义迷你文件浏览器之外还有什么办法吗?
编辑:我需要文件的完整路径名,要求用户输入它是不可能的...
是否可以在asp.net mvc中获取上传文件的完整文件名?![在此处输入图像说明]
更新 数据仅包含文件名,但不包含文件路径!有关详细信息,请参阅附件
我有一个代码来动态地在js中添加输入字段.但问题是如果我添加3个或更多字段然后浏览文件(如果输入字段是文件),则所选字段的值将消失.任何人都可以帮忙
继承我的代码
提前致谢.:)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
<!-- Begin
/* This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Husay :: http://www.communitxt.net */
var arrInput = new Array(0);
var arrInputValue = new Array(0);
fields = 1;
maxInput = 4;
function addInput() {
//arrInput.push(createInput(arrInput.length));
if(fields <= maxInput){
fields +=1;
arrInput.push(arrInput.length);
//arrInputValue.push(arrInputValue.length);
arrInputValue.push("");
display();
}
}
function display() { …Run Code Online (Sandbox Code Playgroud) 我不太确定为什么带有 enctype="multipart/form-data" 标签的 html 表单没有传递它应该传递的对象。mozilla 和 firefox 就是这种情况。
例如,对于 IE 的情况,我使用 html 控件来选择一个文件,它确实得到了它应该得到的。
现在我只想知道是否有任何替代方法可以用来通过 http 请求对象传递文件,因为 enctype="multipart/form-data" 似乎存在一些兼容性问题,但我不确定
任何建议,将不胜感激!:D