Heroku只有100MB的文件存储空间,对吧?我正在制作一个低级别的rails应用程序而且我非常喜欢Heroku,但如果我的应用程序允许每个用户上传一张图片,我可能会快速耗尽空间...是否有一个简单的解决方案可以让我有替代方案文件存储的配置文件图片或类似的东西?
我试图捕获一个与表单一起发送的文件,并在保存之前对其执行一些操作.所以我需要在临时目录中创建此文件的副本,但我不知道如何到达它.Shutil的功能无法复制此文件,因为没有路径.那么有没有办法以其他方式进行此操作?
我的代码:
image = form.cleaned_data['image']
temp = os.path.join(settings.PROJECT_PATH, 'tmp')
sourceFile = image.name # without .name here it wasn't working either
import shutil
shutil.copy(sourceFile, temp)
Run Code Online (Sandbox Code Playgroud)
哪个提出:
Exception Type: IOError at /
Exception Value: (2, 'No such file or directory')
调试:
# (..)\views.py in function
67. sourceFile = image.name
68. import shutil
69. shutil.copy2(sourceFile, temp) ...
# (..)\Python26\lib\shutil.py in copy2
92. """Copy data and all stat info ("cp -p src dst").
93.
94. The destination may be a directory.
95.
96. """ …Run Code Online (Sandbox Code Playgroud) 我正在研究一种将文件存储在文件系统中的软件,以及对数据库中这些文件的引用.因此,可以在数据库中查询上载的文件,而无需访问文件系统.从我在其他帖子中看到的内容来看,大多数人都说最好使用文件系统进行文件存储,而不是将二进制数据直接存储在数据库中作为BLOB.
所以现在我正在尝试理解设置它的最佳方法,以便数据库和文件系统保持同步,并且最终不会引用不存在的文件,或者文件占用空间.未引用的文件系统.以下是我正在考虑的两个选项.
选项1:首先添加文件参考
//Adds a reference to a file in the database
database.AddFileRef("newfile.txt");
//Stores the file in the file system
fileStorage.SaveFile("newfile.txt",dataStream);
Run Code Online (Sandbox Code Playgroud)
此选项会有问题,因为在实际文件之前添加了对文件的引用,因此另一个用户可能会在文件实际存储到系统之前尝试下载文件.尽管如此,因为在存储文件之前可以使用对主文件的引用来创建对文件的引用.
选项2:首先存储文件
//Stores the file
fileStorage.SaveFile("newfile.txt",dataStream);
//Adds a reference to the file in the database
//fails if reference file does not existing in file system
database.AddFileRef("newfile.txt");
Run Code Online (Sandbox Code Playgroud)
此选项更好,但可以让某人将文件上传到从未引用的系统.虽然这可以通过"清除"或"清理UFFileSystem"功能来修复,但删除任何未引用的文件.此选项也不允许使用数据库中的主键值存储文件.
选项3:待定状态
//Adds a pending file reference to database
//pending files would be ignored by others
database.AddFileRef("newfile.txt");
//Stores the file, fails if there is no
//matching pending file reference in the database
fileStorage.SaveFile("newfile.txt",dataStream); …Run Code Online (Sandbox Code Playgroud) 我正在开发一个PHP平台,它将大量使用图像,文档和任何文件格式,这些都会在我脑海中浮现,所以我想知道Cassandra是否是我需要的好选择.
如果没有,你能告诉我应该如何存储文件吗?我想继续使用cassandra,因为它具有容错能力,并且在节点之间使用自动复制.
感谢帮助.
我一直在使用外部存储来保存不同类型的文件。该文件需要对用户可见。现在从 Android Q 开始,该方法getExternalStoragePublicDirectory()已被弃用getExternalStoragePublicDirectory(docs)。
我使用了以下代码:
File externalFilesDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "DirectoryName");
Run Code Online (Sandbox Code Playgroud)
是否有另一种方法来保存用户可见的文件?
可能重复:
使用PHP克隆+重命名文件
这应该很容易.我不想复制和重命名服务器上已存在的图像,同时仍保留原始图像.
这是原始图像位置:
images/
folder/
one.jpg
Run Code Online (Sandbox Code Playgroud)
这就是我要的:
images/
folder/
one.jpg
one_thumb.jpg
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?你可以看到我不只是简单地重命名现有的文件/图像.我想复制它并将其重命名为同一目录.
我是Xamarin.Forms和移动开发的新手.我想将我的应用程序用户的用户和加密密码存储在移动设备上的文件中.我正在使用xamarin表格技术.我知道有很多不同的文件夹.例如:
System.Environment.SpecialFolder.Personal
System.Environment.SpecialFolder.LocalApplicationData
System.Environment.SpecialFolder.MyDocuments
Run Code Online (Sandbox Code Playgroud)
完整列表,你可以在这里找到:https://msdn.microsoft.com/en-gb/en-enl/library/system.environment.specialfolder(v=vs.110).aspx
商店的最佳文件夹/目录是什么:
??
编辑:我发现"个人"对我有好处,但是如果你有其他答案也可以发布. SpecialFolder.Personal位置
我开发了一个Java EE Web应用程序.该应用程序允许用户在浏览器的帮助下上传文件.一旦用户上传了他的文件,该应用程序首先将上载的文件存储在服务器上(运行它),然后对其进行处理.
目前,我将文件存储在服务器上,如下所示:
try {
// formFile represents the uploaded file
FormFile formFile = programForm.getTheFile();
String path = getServlet().getServletContext().getRealPath("") + "/"
+ formFile.getFileName();
System.out.println(path);
file = new File(path);
outputStream = new FileOutputStream(file);
outputStream.write(formFile.getFileData());
}
Run Code Online (Sandbox Code Playgroud)
其中,formFile代表上传的文件.
现在,问题是它在某些服务器上正常运行但在某些服务器上getServlet().getServletContext().getRealPath("")正在返回,null因此我得到的最终路径是null/filename文件不存储在服务器上.
当我检查API ServletContext.getRealPath()方法时,我发现了以下内容:
public java.lang.String getRealPath(java.lang.String path)返回包含给定虚拟路径的实际路径的String.例如,路径
"/index.html"返回服务器文件系统上的绝对文件路径将由请求提供服务"http://host/contextPath/index.html",其中contextPath是此ServletContext的上下文路径.返回的实际路径将采用适合运行servlet容器的计算机和操作系统的形式,包括正确的路径分隔符.如果servlet容器由于任何原因(例如,当从.war存档提供内容时)无法将虚拟路径转换为实际路径,则此方法返回null.
那么,有没有其他方法可以将文件存储在那些正在返回的服务器null上getServlet().getServletContext().getRealPath("")
有没有办法删除特定目录中的所有文件.我正在尝试清除我在存储\ app\backgrounds中创建的文件夹背景中的所有文件,但在docs中似乎没有删除所有方法.
Storage::delete('backgrounds\*.jpg');
Run Code Online (Sandbox Code Playgroud) 在我的小型独立Java应用程序中,我想存储信息.
我的要求:
因此,我想使用jaxb将所有信息存储在文件系统中的简单XML文件中.我的示例应用程序看起来像这样(将所有代码复制到一个名为Application.java和编译的文件中,没有其他要求!):
@XmlRootElement
class DataStorage {
String emailAddress;
List<String> familyMembers;
// List<Address> addresses;
}
public class Application {
private static JAXBContext jc;
private static File storageLocation = new File("data.xml");
public static void main(String[] args) throws Exception {
jc = JAXBContext.newInstance(DataStorage.class);
DataStorage dataStorage = load();
// the main application will be executed here
// data manipulation like this:
dataStorage.emailAddress = "me@example.com";
dataStorage.familyMembers.add("Mike");
save(dataStorage);
}
protected static DataStorage load() …Run Code Online (Sandbox Code Playgroud)