- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将一个 1kb 的文本文件上传到服务器。无论出于何种原因,我收到的数据不包含文件信息。所以 FileItem.Write(file) 不起作用。由于 FileItem 表示大小为 0。
我认为这不是连接问题,因为我设法接收了 URLVariables。唯一没有通过的是实际文件。
我遵循了 adobe flex 指南,但它仍然不起作用。 ( http://livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_7.html )
不会抛出任何错误并触发事件完成。
有什么建议吗?
弹性 3.2 SDKJ老板服务器java做后处理
编辑:添加源代码
CertificateUploadServlet.java
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import java.util.ListIterator;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class CertificateUploadServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
File disk = null;
FileItem item = null;
DiskFileItemFactory factory = new DiskFileItemFactory();
ListIterator iterator = null;
List items = null;
Servlet FileUpload upload = new ServletFileUpload(factory);
try
{
items = upload.parseRequest(request);
}catch (FileUploadException e1)
{
// Oh Noes!
}
iterator = items.listIterator();
while(iterator.hasNext())
{
item = (FileItem) iterator.next();
if(item.isFormField())
{
}else
{
try
{
PrintWriter out1 = new PrintWriter(new BufferedWriter(new FileWriter("C:/Test/processUploadedFile2.txt",true)));
out1.println("item.getContentType():\t\t "+item.getContentType());
out1.println("item.getName:\t\t "+ item.getName());
out1.println("item.getSize:\t\t" + item.getSize());
out1.println("item.getString:\t\t" + item.getString());
out1.println("item.getFieldName:\t\t"+item.getFieldName());
out1.println("item.isInMemory:\t\t" + item.isInMemory());
out1.println("item.toString():\t\t" + item.toString());
out1.close();
}
catch(IOException e)
{
// oh Noes~
}
}
}
}
数据测试.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.netFileReference;
import mx.controls.Alert;
private var fileRef:FileReference = new FileReference();
private function init():void
{
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
}
private function selectHandler(event:Event):void
{
Alert.show("Selected...");
var request:URLRequest= new URLRequest("https://localhost/scm/uploadServlet");
fileRef.upload(request);
}
private function completeHandler(event:Event):void
{
Alert.show("File got uploaded");
}
]]>
</mx:Script>
<mx:Button id="mBrowseButton" label="browse..." click="fileRef.browse()" />
</mx:Application>
item.getName:返回我要上传的正确文件名
但 item.getSize 始终返回 0,因此当我尝试在服务器上写入文件时,它始终为空。
更多信息:
我能够将变量添加到 URLVariables 类并在 java 类中检索它。唯一的问题是文件没有传输。
输出:
Single file upload test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000000.tmp, size=10bytes, isFormField=true, FieldName=Filename
item name: Filename value: Cookie.txt
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000001.tmp, size=0bytes, isFormField=false, FieldName=Filedata
item.getName() : Cookie.txt
item.getContentType(): application/octet-stream
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isInMemory: true
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000001.tmp, size=0bytes, isFormField=false, FieldName=Filedata
item name: Upload value: Submit Query
Multifile upload test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000003.tmp, size=10bytes, isFormField=true, FieldName=Filename
item name: Filename value: Cookie.txt
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000004.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000006.tmp, size=10bytes, isFormField=true, FieldName=Filename
item name: Filename value: doPost.txt
item.toString(): name=doPost.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000007.tmp, size=0bytes, isFormField=false, FieldName=Filedata
Single file upload test
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000010.tmp, size=0bytes, isFormField=false, FieldName=Filedata
item name: Filename value: Cookie.txt
item.getName() : Cookie.txt
item.getContentType(): application/octet-stream
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isInMemory: true
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\work\jboss.web\localhost\scm\upload_76556a96_14064a51ded__7ffa_00000010.tmp, size=0bytes, isFormField=false, FieldName=Filedata
item name: Upload value: Submit Query
编辑:更多信息。以下输出来自用户 c.s 代码。我不明白为什么它仍然不允许我按照记录的方式显示信息。
accept:text/*
content-type:multipart/form-data; boundary=----------ae0ae0ae0GI3ae0GI3ae0Ij5gL6cH2
user-agent:Shockwave Flash
host:localhost
content-length:1019
connection:Keep-Alive
cache-control:no-cache
cookie:JSESSIONID=BE2BF803041A7324CAF21445F6F3389C
------------ae0ae0ae0GI3ae0GI3ae0Ij5gL6cH2
Content-Disposition: form-data; name="Filename"
Cookie.txt
------------ae0ae0ae0GI3ae0GI3ae0Ij5gL6cH2
Content-Disposition: form-data; name="Filedata"; filename="Cookie.txt"
Content-Type: application/octet-stream
en.wikipedia.org FALSE / FALSE 0 BCSI-CS-1b3dbb382aea0366 2
en.wikipedia.org FALSE / FALSE 1404323604 centralnotice_bannercount_fr12 1
en.wikipedia.org FALSE / FALSE 1374590485 centralnotice_bucket 0-4.2
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%4011-tracking 11%3Aignore
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%405-links 5%3AX
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%406-form 6%3A6
en.wikipedia.org FALSE / FALSE 0 uls-previous-languages %5B%22en%22%5D
------------ae0ae0ae0GI3ae0GI3ae0Ij5gL6cH2
Content-Disposition: form-data; name="Upload"
Submit Query
------------ae0ae0ae0GI3ae0GI3ae0Ij5gL6cH2--
// dumpRequest = false output
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 10
item.getString: Cookie.txt
item.getFieldName: Filename
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__272408b1_140738428eb__7ffa_00000006.tmp, size=10bytes, isFormField=true, FieldName=Filename
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): application/octet-stream
item.getName: Cookie.txt
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isFormField: false
item.isInMemory: true
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__272408b1_140738428eb__7ffa_00000007.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 12
item.getString: Submit Query
item.getFieldName: Upload
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__272408b1_140738428eb__7ffa_00000008.tmp, size=12bytes, isFormField=true, FieldName=Upload
更多信息:
版本信息
Apache Maven: 2.2.1
Java version: 1.6.0_39
fileupload: 1.2
Commons-IO: 1.4
Internet Explorer: 8.0.7601.17514
Flash Player: 11.8.800.94
更多输出信息。第一次尝试使用 cookie.txt,第二次尝试使用 test.txt
#########################True/True
------------GI3gL6Ef1GI3cH2KM7ei4cH2gL6ei4
Content-Disposition: form-data; name="Filename"
Cookie.txt
------------GI3gL6Ef1GI3cH2KM7ei4cH2gL6ei4
Content-Disposition: form-data; name="Filedata"; filename="Cookie.txt"
Content-Type: application/octet-stream
en.wikipedia.org FALSE / FALSE 0 BCSI-CS-1b3dbb382aea0366 2
en.wikipedia.org FALSE / FALSE 1404323604 centralnotice_bannercount_fr12 1
en.wikipedia.org FALSE / FALSE 1374590485 centralnotice_bucket 0-4.2
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%4011-tracking 11%3Aignore
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%405-links 5%3AX
en.wikipedia.org FALSE / FALSE 1373131359 mediaWiki.user.bucket%3Aext.articleFeedbackv5%406-form 6%3A6
en.wikipedia.org FALSE / FALSE 0 uls-previous-languages %5B%22en%22%5D
------------GI3gL6Ef1GI3cH2KM7ei4cH2gL6ei4
Content-Disposition: form-data; name="Upload"
Submit Query
------------GI3gL6Ef1GI3cH2KM7ei4cH2gL6ei4--
#########################True/True
------------gL6GI3Ij5Ef1ei4Ef1ae0ei4Ef1gL6
Content-Disposition: form-data; name="Filename"
Test.txt
------------gL6GI3Ij5Ef1ei4Ef1ae0ei4Ef1gL6
Content-Disposition: form-data; name="Filedata"; filename="Test.txt"
Content-Type: application/octet-stream
This is text found instead Test.txt
------------gL6GI3Ij5Ef1ei4Ef1ae0ei4Ef1gL6
Content-Disposition: form-data; name="Upload"
Submit Query
------------gL6GI3Ij5Ef1ei4Ef1ae0ei4Ef1gL6--
#########################False/True
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 10
item.getString: Cookie.txt
item.getFieldName: Filename
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__32478800_14078614409__7ffa_00000000.tmp, size=10bytes, isFormField=true, FieldName=Filename
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): application/octet-stream
item.getName: Cookie.txt
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isFormField: false
item.isInMemory: true
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__32478800_14078614409__7ffa_00000001.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 12
item.getString: Submit Query
item.getFieldName: Upload
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload__32478800_14078614409__7ffa_00000002.tmp, size=12bytes, isFormField=true, FieldName=Upload
#########################False/True
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 8
item.getString: Test.txt
item.getFieldName: Filename
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_6fd3dea8_140789cbb78__7ffa_00000003.tmp, size=8bytes, isFormField=true, FieldName=Filename
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): application/octet-stream
item.getName: Test.txt
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isFormField: false
item.isInMemory: true
item.toString(): name=Test.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_6fd3dea8_140789cbb78__7ffa_00000004.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 12
item.getString: Submit Query
item.getFieldName: Upload
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_6fd3dea8_140789cbb78__7ffa_00000005.tmp, size=12bytes, isFormField=true, FieldName=Upload
#########################True/False
[accept:text/*
content-type:multipart/form-data; boundary=----------Ij5KM7ae0Ef1GI3ei4ei4gL6GI3ei4
user-agent:Shockwave Flash
host:localhost
content-length:1019
connection:Keep-Alive
cache-control:no-cache
cookie:JSESSIONID=C8FF29BF4253B2E9B9EEF3360F83EB74
]
#########################True/False
[accept:text/*
content-type:multipart/form-data; boundary=----------GI3cH2ei4KM7ei4GI3GI3KM7gL6ae0
user-agent:Shockwave Flash
host:localhost
content-length:449
connection:Keep-Alive
cache-control:no-cache
cookie:JSESSIONID=B4D506EF25DA8FD0D5B11DBA98B2B21D
]
#########################False/False
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 10
item.getString: Cookie.txt
item.getFieldName: Filename
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_50024124_140787caa99__7ffa_00000000.tmp, size=10bytes, isFormField=true, FieldName=Filename
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): application/octet-stream
item.getName: Cookie.txt
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isFormField: false
item.isInMemory: true
item.toString(): name=Cookie.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_50024124_140787caa99__7ffa_00000001.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 12
item.getString: Submit Query
item.getFieldName: Upload
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_50024124_140787caa99__7ffa_00000002.tmp, size=12bytes, isFormField=true, FieldName=Upload
#########################False/False
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 8
item.getString: Test.txt
item.getFieldName: Filename
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_c1b3312_14078bd7c03__7ffa_00000000.tmp, size=8bytes, isFormField=true, FieldName=Filename
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): application/octet-stream
item.getName: Test.txt
item.getSize: 0
item.getString:
item.getFieldName: Filedata
item.isFormField: false
item.isInMemory: true
item.toString(): name=Test.txt, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_c1b3312_14078bd7c03__7ffa_00000001.tmp, size=0bytes, isFormField=false, FieldName=Filedata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
item.getContentType(): null
item.getName: null
item.getSize: 12
item.getString: Submit Query
item.getFieldName: Upload
item.isFormField: true
item.isInMemory: true
item.toString(): name=null, StoreLocation=C:\test\jboss-eap-5.1\jboss-as\server\test\tmp\upload_c1b3312_14078bd7c03__7ffa_00000002.tmp, size=12bytes, isFormField=true, FieldName=Upload
最佳答案
首先,请检查您上传的文件是否是您认为的文件,并且没有空内容。
其次,请使用下面的 servlet 代码并针对 http
和 https
协议(protocol)运行您的示例。您可以将变量 dumpRequest
更改为 false
以打印与您所拥有的相似的 FileItem
的信息。
public class UploadServlet extends HttpServlet {
private boolean dumpRequest = true;
private boolean saveToFile = true;
private String fileName = "requestBody.txt";
@Override
public void init() {
log("Upload servlet initialized");
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
try {
log("Servicing new request...");
if (dumpRequest) {
dumpRequestBody(request, response);
} else {
Writer writer = new OutputStreamWriter( response.getOutputStream() );
FileItem item = null;
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List<?>items = upload.parseRequest(request);
ListIterator<?> iterator = items.listIterator();
while (iterator.hasNext()) {
item = (FileItem) iterator.next();
writer.write("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
writer.write("item.getContentType():\t " + item.getContentType() + "\n");
writer.write("item.getName:\t" + item.getName() + "\n");
writer.write("item.getSize:\t" + item.getSize() + "\n");
writer.write("item.getString:\t" + item.getString() + "\n");
writer.write("item.getFieldName:\t" + item.getFieldName() + "\n");
writer.write("item.isFormField:\t" + item.isFormField() + "\n");
writer.write("item.isInMemory:\t" + item.isInMemory() + "\n");
writer.write("item.toString():\t" + item.toString() + "\n");
writer.flush();
}
writer.close();
}
} catch(Exception e) {
throw new RuntimeException(e);
}
}
private void dumpRequestBody(HttpServletRequest request, HttpServletResponse response) throws IOException {
OutputStream responseOut = response.getOutputStream();
InputStream in = request.getInputStream();
if (!saveToFile) {
dumpHeaders(request, responseOut);
dumpStream(in, responseOut);
} else {
File file = new File(fileName);
FileOutputStream out = new FileOutputStream(file);
dumpStream(in, out);
out.close();
Writer writer = new OutputStreamWriter(responseOut);
writer.write("Response body was saved to file: " + file.getAbsolutePath());
writer.close();
}
in.close();
responseOut.flush();
responseOut.close();
}
private void dumpHeaders(HttpServletRequest request, OutputStream out) throws IOException {
Writer writer = new OutputStreamWriter(out);
writer.write("[");
// first dump headers
Enumeration<String> allHeaders = request.getHeaderNames();
while (allHeaders.hasMoreElements()) {
String header = allHeaders.nextElement();
String value = request.getHeader(header);
writer.write(header + ":" + value + "\n");
}
writer.write("]");
writer.flush();
}
private void dumpStream(InputStream in, OutputStream out) throws IOException {
byte[] buffer = new byte[2 * 1024];
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
out.flush();
}
}
上面的 servlet 为 http
和名为 test.txt
的文件运行时,其中包含上传的一行简单的文本 Test data
通过一个简单的 html 页面生成下面的转储。将您获得的输出(也请用这些输出更新您的问题)与下面的输出进行比较,以便能够进一步解决此问题。
[host:localhost:8080
user-agent:Mozilla/5.0 (Windows NT 6.0; rv:22.0) Gecko/20100101 Firefox/22.0
accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language:el-gr,el;q=0.8,en-us;q=0.5,en;q=0.3
accept-encoding:gzip, deflate
referer:http://localhost:8080/upload/upload.html
connection:keep-alive
content-type:multipart/form-data; boundary=---------------------------5118710224663
content-length:298
]-----------------------------5118710224663
Content-Disposition: form-data; name="myfile"; filename="test.txt"
Content-Type: text/plain
Test data
-----------------------------5118710224663
Content-Disposition: form-data; name="submit"
Submit
-----------------------------5118710224663--
更新 1:Servlet 代码和输出已更新。新的 servlet 可以选择将请求主体写入文件。请使用 dumpRequest = true
、saveToFile = false
运行两次以查看响应结果并更新问题中的输出,一次使用 true
对于两者,将请求正文保存在文件中。请将该文件上传到某处。
从 UploadServlet 的第一个输出可以看出,文件数据存在于请求正文中,但公共(public)文件上传没有正确解析它们。如果您使用的是最新版本(即 commons-fileupload: 1.3, commons-io: 2.4),或者如果您使用的是旧版本,那么您要么遇到错误(这不是第一次 commons upload and Flash don't play nice together )正在遇到那个错误或它的副作用。
因为最可能的原因是Flash使用的行变化有问题,或者它写边界的方式有问题。无论如何,如果您可以上传一个包含如上所述生成的响应主体的文件,并且还请提及您的版本:commons-fileupload、commons-io、Flash 播放器、您在您的场景中使用的浏览器,那就太好了。
更新 2:很遗憾,我无法使用您提供的文件中的请求正文重现您的情况。虽然 Flash 似乎没有创建严格有效的请求(它没有在文件末尾添加额外的 \r\n
),但我可以使用 commons-file-upload 正常上传此请求1.2 和 1.3 所以我已经没有想法了。
我建议的最后一件事是尝试使用下面的简单 html 页面从浏览器上传文件。将此文件放在 Web 应用程序的根目录中并上传文件 Cookie.txt
(确保表单中的 action
指向上传 servlet)。如果这不起作用,那么问题出在公共(public)文件上传方面,尽管我无法想象它可能是什么。密切关注服务器日志(也许某个地方的异常被浅化了?)也没有坏处。
唯一可以揭示您的问题的安全方法是下载 commons-file-upload 的源代码,将其放入您的项目中,而不是将其用作依赖项和调试。由于在您的案例中每次都会出现问题,因此找到它应该不难。
上传 html:
<html>
<body>
<form action="/scm/uploadServlet" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label><br/>
<input type="file" name="myfile" id="file"><br/>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
关于java - Flex 中没有上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18092062/
更新 对于那些不喜欢内联 CSS 并想要类的人,这里有另一个带有类和样式表的 jsFiddle。 更新结束 我想做一个产品页面。它将包含三列。第一个是图片,第二个是一些规范,第三个是“入篮”。所有列的
我创建了一个简单的测试应用程序 使用以下代码 var i : int; for (i=0; i *
我做了一个小demo http://html5.by/blogdemo/flexbox/flex-grow-shrink-basis-stackoverflow.html flex 容器中有2个 fl
我读过好几遍,要让 flex-grow 按预期工作,您通常需要设置 flex-grow:1(或 flex: 1) 在元素的父级、其父级等上,一直向上。 在学习 flexbox 时,这给我的印象是它具有
我开始学习 FLEX。我只有 flex sdk。所以我只能使用它开始学习吗?如果是这样,请建议我要通过的链接.. 但是,使用编辑器将最大限度地减少我们的工作,并自行创建代码。所以作为一个新的学习者,理
有没有办法使用 flex-direction: column 在 flex 容器中放置 flex 项有相同的高度,只使用 CSS? JSFiddle:https://jsf
我有一个 flex .swf 和一个单独的 AIR 项目,我试图通过套接字相互通信。 这两个程序连接正常,.swf 能够毫无问题地将数据发送到 AIR 应用程序。但是,我发现当 AIR 应用程序将数据
在这种情况下,我希望将 2.5 放置在 2 下方 - 但 flexbox 容器强制将其放置在同一行,而不是将其放置在 div 下方那已经是那个特定的顺序了。 我如何使用 flexbox - 将包含 2
假设您有一个带有显示 flex、flex-direction 列的 div,在本例中高度为 600。 它有三个子项,每个子项的属性 flex 等于 1。前两个子项呈现一些简单文本,第三个子项呈现 h1
男孩,这个头衔是满口的。让我解释一下我的困惑: 我有一个 flex 容器和 2 个 flex 元素。 /* CSS */ .container {
这个问题在这里已经有了答案: CSS3 Flexbox: display: box vs. flexbox vs. flex (3 个答案) 关闭 1 年前。 今天我们中的许多人都知道 displa
其用例是带有单选按钮的响应式表单。当在大 PC 屏幕上时,所有单选按钮通常都在屏幕上的一行中(就像带有 flex-direction: row 的非包装 flex 容器中的 flex 元素)。在电话上
在可访问的 flex 应用程序中,用户可以使用 TAB 键在控件中导航。 在用户激活特定链接后,flex 应用程序会在 html 页面顶部弹出,并使用 swfobject.embedSWF 加载。 它
我将我的 Flex 3 项目导入 Flex 4 并删除了 Flex 4 问题窗口中列出的所有错误和警告。 启动我的应用程序时,我在 Flex 4 中遇到以下错误。 这可能是什么原因? Error: C
我有如下标记: alot of text 我不能让黄色占据红色的 100% 高度,即使红色溢出,它也只占据窗口的 100%。如果我将红色的 display
我在 Eclispe 3.4 中安装了 flex builder 3 插件。现在许可证过期了。所以我需要在其中添加另一个许可证。但我无法更改许可证 key ,因为该选项已禁用。 因此,请任何人知道如何
这个问题在这里已经有了答案: Make flex items have equal width in a row (3 个答案) How to make Flexbox items the same
我正在尝试理解以下行。 flex :0 1 50% 现在,如果最后一个值,flex basis 是像素,上面会说该元素不允许增长,但允许缩小并且最大为 50 像素。 但是用百分比代替,有什么关系。它将
我一直致力于 flex 布局,遇到了针对 Firefox 和 IE11 的问题。 我创建了一个 codepen显示问题。 截图 Chrome(左)、Firefox(右) 描述 预期的行为是header
我正在尝试在 flex (flash builder 4) 中创建一个简单的表单。我在里面放了一个表单容器和 FormItems。例如,表单项是标准的“客户”字段,例如名字、姓氏、地址、城市、州、 z
我是一名优秀的程序员,十分优秀!