我有以下代码块处理我在Spring MVC Web应用程序中使用的照片的文件上传.我正在使用Spring MVC CommonsMultipartFileResolver来处理文件上传.
if(model.getPhoto() != null){
if(!model.getPhoto().isEmpty()){
MultipartFile file = model.getPhoto();
String fileName = file.getOriginalFilename();
String filePath = baseDirectory + fileName;
FileOutputStream fos = new FileOutputStream(filePath);
try
{
fos.write(file.getBytes());
agentProfile.setPhotoUri(fileName);
}
catch (IllegalStateException e)
{
System.out.println(e);
}
finally
{
fos.close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的app-servlet.xml文件中,我有以下代码来配置MultipartFile解析器bean.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>
Run Code Online (Sandbox Code Playgroud)
我在上传照片时遇到了一些随机问题.
1)如果我上传一张较小的照片,大约3 kb左右,它会成功上传.
2)如果我上传一张更大的照片,它将在目录中创建文件,但大小为0字节,并将给出以下错误消息.
java.lang.IllegalStateException: File has been moved - cannot be read again
org.springframework.web.multipart.commons.CommonsMultipartFile.getBytes(CommonsMultipartFile.java:112)
com.mmz.admin.mvc.controller.AddAgentController.processFinish(AddAgentController.java:145)
org.springframework.web.servlet.mvc.AbstractWizardFormController.validatePagesAndFinish(AbstractWizardFormController.java:642)
org.springframework.web.servlet.mvc.AbstractWizardFormController.processFormSubmission(AbstractWizardFormController.java:492)
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Run Code Online (Sandbox Code Playgroud)
我尝试了一些配置Multipart解析器的不同选项,例如将其切换为处理CommonsMultipartFile对象,与普通的 …
首先,我只是为了学术目的而编写了以下代码.我说这个的原因是因为我没有将它放在生产环境中,因此我"绕过"了我需要做的一些开销,我只需要能够使用加密/解密字符串下面的代码.我能够做到这一点,但由于某种原因,我开始收到"CryptographicException Bad Data",我不确定是什么原因导致了这个问题.
private string RSAEncrypt(string value)
{
byte[] encryptedData = Encoding.Unicode.GetBytes(value);
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Encrypt(encryptedData, false);
return Convert.ToBase64String(encryptedData);
}
}
private string RSADecrypt(string value)
{
byte[] encryptedData = Encoding.Unicode.GetBytes(value);
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Decrypt(encryptedData,false);
return Convert.ToBase64String(encryptedData);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是在RSADecrypt调用上抛出此异常.
有任何想法吗?我读到了可能与传递给RSA.Decrypt的encryptedData的预期大小有关的地方.
谢谢 }
使用Java Date实用程序时的真正含义是什么并且已被弃用.这是否意味着不鼓励使用,还是暗示它被禁止?
我猜测使用弃用方法是不好的做法,但我不确定并想知道.
例如,我正在尝试使用如下代码
String date = request.getParameter("date");
model.setDate(new Date(date));
Run Code Online (Sandbox Code Playgroud)
当然......这是一个高级示例,但在这种情况下,我的模型使用Date类型,我需要将请求中的日期作为String拉出并使用它创建日期.
我的工作方式很好,但它使用的是不推荐使用的方法.
编辑 - 我已经回去使用了
SimpleDateFormat formatter = new SimpleDateFormat();
model.setDate(formatter.parse(request.getParameter("date");
日期的格式为MM/DD/YYY,如07/23/2010,但我收到了ParseException
这可能是什么?
提出这个问题我觉得有点荒谬,但我从未真正研究过这个问题.我正在尝试确定我所使用的项目的WCF版本是什么?
我看到一些与WCF项目和ServiceModel相关的常见DLL是4.0,但不确定我是否可以做出这个假设.
我有以下内容docker-compose.yml:
node1:
build: ./node
links:
- redis
ports:
- "8080"
node2:
build: ./node
links:
- redis
ports:
- "8080"
service1:
build: ./service
links:
- redis
ports:
- "8383"
redis:
image: redis
ports:
- "6379"
nginx:
build: ./nginx
links:
- node1:node1
- node2:node2
- service1:service1
ports:
- "80:80"
Run Code Online (Sandbox Code Playgroud)
执行此操作并运行后,docker ps我得到以下内容:
080d9d7dc2e0 dockerworkflow_nginx:latest "nginx -g 'daemon of 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, 443/tcp dockerworkflow_nginx_1
8c25bfdb9d00 dockerworkflow_node1:latest "nodemon /src/index. 6 minutes ago Up 6 minutes 0.0.0.0:33023->8080/tcp dockerworkflow_node1_1 …Run Code Online (Sandbox Code Playgroud) 假设我使用以下命令启动一个 docker 容器
docker run -d --name my-container -p 1234 my-image
Run Code Online (Sandbox Code Playgroud)
运行docker ps显示该图像的端口绑定是...
80/tcp, 443 /tcp. 0.0.0.0:32768->1234/tcp
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以用来docker inspect获取分配要映射到的端口1234(在本例中为 32768)?
类似于使用以下命令解析并获取IP地址......
IP=$(docker inspect -f "{{ .Networksettings.IPAddress }} my-container)
Run Code Online (Sandbox Code Playgroud)
我希望能够做类似以下的事情
ASSIGNED_PORT=$(docker inspect -f "{{...}} my-container)
Run Code Online (Sandbox Code Playgroud)
我不确定是否有办法通过 Docker 来做到这一点,但我想有一些命令行魔法(grep、sed 等)可以让我做这样的事情。
当我跑步docker inspect my-container并查看NetworkSettings......我看到以下内容
"NetworkSettings": {
...
...
...
"Ports": {
"1234/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "32768"
}
],
"443/tcp": null,
"80/tcp": null
},
...
...
},
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我希望它能够找到 HostPort,而无需我告诉它任何有关端口 1234 的信息(它应该忽略其下面的 443 …
我正在 OSX 上运行一个控制台应用程序,它具有以下内容...
public static void main(string[] args)
{
string mongoEndpoint = Environment.GetEnvironmentVariable("MONGO_ENDPOINT");
if(string.IsNullOrEmpty(mongoEndpoint))
{
_log.Fatal("Invalid Mongo Endpoint");
throw new Exception("Invalid Mongo Endpoint");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经向我添加了一个MONGO_ENDPOINT环境变量~/.bash_profile,当我运行echo $MONGO_ENDPOINT它时会输出正确的值。
但是,当我在 OSX 中从 Xamarin Studio 运行我的控制台应用程序时,它返回 null。
我尝试运行以下命令以查看是否都是环境变量,并返回了正确的值。
Console.Out.WriteLine(Environment.GetEnvironmentVariable("HOME"));
Run Code Online (Sandbox Code Playgroud)
它输出得/usr/myname很好。
找不到这个环境变量的任何原因?
我一直在研究WPF应用程序,它本质上是一个WYSIWYG编辑器,并且正在使用拖放功能.我有拖放功能,但需要使其更直观和用户友好.部分内容涉及实际显示被拖动的项目.最简单的方法是什么?我拖的项目并不特别,但我甚至不确定在哪里寻找如何做到这一点.
我正在使用WPF应用程序,我正在开发一个DataGrid,它包含了必须对事件做出反应的动态内容的使用等.
我有包含DataGrid的View的以下ViewModel
public class HiddenFieldPanelViewModel
{
public List<HiddenFieldComponent> HiddenFieldList { get; set; }
public HiddenFieldComponent Component { get; set; }
public bool IsVisible { get; set; }
public enum FieldTypes{Constant,Variable}
public HiddenFieldPanelViewModel()
{
HiddenFieldList = new List<HiddenFieldComponent>();
IsVisible = false;
}
}
Run Code Online (Sandbox Code Playgroud)
此模型上适用于此示例的唯一属性是以下枚举属性
public enum FieldTypes {Constant,Variable}
Run Code Online (Sandbox Code Playgroud)
填充DataGrid时我需要做的是将枚举类型绑定到DataGrid单元格中的下拉列表,这里是添加它之后的一个DataGrid集合项的示例

例如,在上图中,我希望它具有FieldTypes枚举中的两个Enum值.
在我的XAML中,我指定了以下内容:
<DataGridTemplateColumn Header="Field Type" CanUserResize="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Height="20" SelectedIndex="0" ItemsSource="{Binding Path=FieldTypes}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Path=Value}"></Label>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
其他列正确绑定数据,但这不是.
我不确定是否有更好的方法来做到这一点.我还从IValueConverter编写了一个EnumConverter来处理字符串枚举字符串转换(如果需要的话).
谢谢
在.NET工作之后,我非常精通NancyFX和Web API等微型Web框架对IoC容器的支持.
在像Sinatra这样的Ruby类似框架中(NancyFX基于Sinatra),似乎你有依赖注入的能力.
从我看到的,因为Java spark应用程序作为主要方法运行,似乎你不能传入依赖项或IoC容器.
public class HelloWorld {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}
Run Code Online (Sandbox Code Playgroud)
我很难理解这样的框架在没有支持的情况下如何有用.
如果这个框架没有,那么是否有另一个轻量级框架(Spring不是我记忆中的轻量级框架,但可能已经发生了变化),它确实支持这个吗?
c# ×5
java ×3
docker ×2
wpf ×2
.net ×1
cryptography ×1
deprecated ×1
dockerfile ×1
encryption ×1
file-upload ×1
grep ×1
macos ×1
mono ×1
nginx ×1
rsa ×1
sed ×1
spark-java ×1
spring ×1
spring-mvc ×1
wcf ×1
xamarin ×1